为了账号安全,请及时绑定邮箱和手机立即绑定

我正在尝试解析这个 json 我不知道我在这里做错了什么

我正在尝试解析这个 json 我不知道我在这里做错了什么

Go
呼唤远方 2022-07-18 16:59:53
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


查看完整回答
反对 回复 2022-07-18
  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号