我目前正在将 API 响应提取到结构中。我可以正常回答说: [ {"date":"2021-10-04","user":"Test","url":"Anonymous"]}, {"date":"2021-10-04","user":"Test","url":"Anonymous"]}, {"date":"2021-10-04","user":"Test","url":"Anonymous"]}, ]但是当我得到这样的数据时: "urls": [ {"date":"2021-10-04","user":"Test","url":"Anonymous"]}, {"date":"2021-10-04","user":"Test","url":"Anonymous"]}, {"date":"2021-10-04","user":"Test","url":"Anonymous"]}, ]我似乎无法将它解析为结构。这似乎是一个愚蠢的问题,因为它基本上是一样的。这是我在做什么: type urls struct { Urls struct { Date string `json:"date"` User string `json:"user"` Urls string `json:"urls"` } `json:"urls"` } type url []urls在函数中: resp, err := http.Get("https://url") if err != nil { fmt.Println("No response from request") } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) // response body is []byte var u url _ = json.Unmarshal(body, &u)不幸的是,这不起作用,你是空的。通过第一个响应,我可以有一个这样的结构并且它工作正常: type urls struct { Date string `json:"date"` User string `json:"user"` Urls string `json:"urls"` }
1 回答

慕桂英4014372
TA贡献1871条经验 获得超13个赞
我想我想说的是上述内容的结合,再加上我的一点经验。
您的 Urls 字段是 JSON 中的一个数组,但不在您声明的结构中。
您不应忽略 json.Unmarshal(body, &u) 返回的错误。
您发布的 Json 在语法上不正确。我稍微修改了你的 Json 字符串,它可能是:
{"urls": [ {"date":"2021-10-04","user":"Test","url":"Anonymous"}, {"date":"2021-10-04","user":"Test","url":"Anonymous"}, {"date":"2021-10-04","user":"Test","url":"Anonymous"} ] }
Go 结构应该是:
type URL struct { SubURLs []struct { Date string `json:"date"` User string `json:"user"` URL string `json:"url"` } `json:"urls"`}
接下来给大家介绍一种在处理JSON to Go structs时可能的方法: 你可以把你的Json贴在这个网站上,然后你就可以得到它对应的Go结构体,你也可以顺便修正你的Json。
- 1 回答
- 0 关注
- 63 浏览
添加回答
举报
0/150
提交
取消