[英]Mapping a multiple dimensional JSON file to a Go struct
毫無疑問,快速而簡單的問題,但讓我難過的一個問題。
Sophie.conf
{
"host": {
"domain": "localhost",
"port": 5000
}
}
main.go
...
type Config struct {
domain string `json:"host.domain"`
port int `json:"host.port"`
}
...
func loadConfig() {
buffer, _ := ioutil.ReadFile(DEFAULT_CONFIG_FILE)
fmt.Println(string(buffer))
json.Unmarshal(buffer, &cfg)
}
...
如果我打印,那不起作用
fmt.Printf("host: %s:%d\n", cfg.domain, cfg.port)
輸出是:
host: :0
我該怎么做呢? 謝謝!
在您的情況下,您應該聲明外部Config
結構。 在它里面你應該定義Host
字段,在我的例子中它是匿名結構,但你可以將它提取為顯式結構。
一個注意事項 - 你應該導出'structs'字段(大寫json.Unmarshal
名稱),或者json.Unmarshal
(或json.Marshal
)將無法正確處理數據,你可以在Play Golang上試驗字段。
http://play.golang.org/p/msu73bwXNb
package main
import (
"encoding/json"
"fmt"
)
const jsonDocument = `
{
"host": {
"domain": "localhost",
"port": 5000
}
}
`
type Config struct {
Host struct {
Domain string
Port int
}
}
func main() {
cfg := &Config{}
json.Unmarshal([]byte(jsonDocument), cfg)
fmt.Printf("host: %s:%d\n", cfg.Host.Domain, cfg.Host.Port)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.