新地鼠来了!我正在使用 go 中的 rest API,我现在正在解析我的第一个返回 JSON,似乎遇到了一些麻烦。首先,来自 API 调用的原始返回让我知道:spew.Dump(body)(string) (len=205) "{\"return\": {\n \"apiMajorVersion\": 3,\n \"apiMinorVersion\": 0,\n \"esmMajorVersion\": 9,\n \"esmMinorVersion\": 5,\n \"esmPatch\": \"MR7\",\n \"esmRevision\": 0,\n \"esmVersionString\": \"9.5.0 20150908\"\n}}"字符串中嵌入了所有反斜杠和换行符。如果我打印fmt.Println(body){"return": { "apiMajorVersion": 3, "apiMinorVersion": 0, "esmMajorVersion": 9, "esmMinorVersion": 5, "esmPatch": "XX7", "esmRevision": 0, "esmVersionString": "9.5.0 20150908"}}然后我得到有效的json。如果我尝试将它解组到结构中,我将无法正确获取结构中的值。type ESMVersionStruct struct { APIMajorVersion int8 `json:"return>apiMajorVersion"` APIMinorVersion int8 `json:"apiMinorVersion"` ESMMajorVersion int8 `json:"esmMajorVersion"` ESMMinorVersion int8 `json:"esmMinorVersion"` ESMPatch string `json:"esmPatch"` ESMRevision int8 `json:"esmRevision"` ESMVersionString string `json:"esmVersionString"`}我已经尝试过在返回中指定对象而不是。jsonData := []byte(body)var ESMVersion ESMVersionStructjson.Unmarshal(jsonData, &ESMVersion)fmt.Println(ESMVersion.APIMajorVersion)fmt.Print(ESMVersion.APIMinorVersion)最后两个都返回空值。在此先感谢您对这方面的任何帮助!
1 回答
呼如林
TA贡献1798条经验 获得超3个赞
你的类型应该是:
type ESMVersionStruct struct {
Return struct {
APIMajorVersion int8 `json:"apiMajorVersion"`
APIMinorVersion int8 `json:"apiMinorVersion"`
ESMMajorVersion int8 `json:"esmMajorVersion"`
ESMMinorVersion int8 `json:"esmMinorVersion"`
ESMPatch string `json:"esmPatch"`
ESMRevision int8 `json:"esmRevision"`
ESMVersionString string `json:"esmVersionString"`
} `json:"return"`
}
也就是说,您的结构嵌入在另一个Return结构中。
- 1 回答
- 0 关注
- 146 浏览
添加回答
举报
0/150
提交
取消