type RedisConfig struct { Dev struct { Host string `json:"host"` Port int `json:"port"` PodHost string `json:"pod_host"` PodPort int `json:"pod_port"` } `json:"dev"` Stage struct { Host string `json:"host"` Port int `json:"port"` PodHost string `json:"pod_host"` PodPort int `json:"pod_port"` } `json:"stage"` Prod struct { Host string `json:"host"` Port int `json:"port"` PodHost string `json:"pod_host"` PodPort int `json:"pod_port"` } `json:"prod"`} var jsonFile = `{ "dev": { "host": "127.0.0.1", "port": 63713219, "pod_host":"127.0.0.1", "pod_port":131 }, "stage": { "host": "123.1.1.", "port": 6379, "pod_host":"21321321", "pod_port":6379 }, "prod": { "host": "21321321321", "port": 6379, "pod_host":"f.com, "pod_port":6379 }}` data,err := json.Unmarshal(jsonFile,RedisConfig{})我正在嘗試解析這個 JSON 我不知道我在這里做錯了什么。請幫助我幾天前開始工作
1 回答

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
你打錯電話json.Unmarshal了。請參閱JSON 文檔。
Unmarshal 的正確方法是這樣的:
var conf RedisConfig
err := json.Unmarshal([]byte(jsonFile), &conf)
if err != nil {
log.Fatal("JSON parsing error:", err)
}
log.Println(conf)
一旦修復了中的錯字,JSON它就可以工作:
https://play.golang.org/p/m5LZuDaRbjW
要將配置轉換為地址映射,您可以使用以下模式:
type RedisMap map[string]RedisAddr
type RedisAddr struct {
Host string `json:"host"`
Port int `json:"port"`
PodHost string `json:"pod_host"`
PodPort int `json:"pod_port"`
}
工作示例: https: //play.golang.org/p/NTou6G_Q8Nc
- 1 回答
- 0 關注
- 143 瀏覽
添加回答
舉報
0/150
提交
取消