新地鼠来了!我正在使用 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 ESMVersionStruct
json.Unmarshal(jsonData, &ESMVersion)
fmt.Println(ESMVersion.APIMajorVersion)
fmt.Print(ESMVersion.APIMinorVersion)
最后两个都返回空值。
在此先感谢您对这方面的任何帮助!
呼如林
相关分类