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

go 字符串处理和 JSON

go 字符串处理和 JSON

Go
慕的地6264312 2021-11-08 16:56:09
新地鼠来了!我正在使用 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结构中。


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信