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 关注
- 200 浏览
添加回答
举报
0/150
提交
取消
