无法解码 JSON 响应
Posted
技术标签:
【中文标题】无法解码 JSON 响应【英文标题】:Unable to decode the JSON response 【发布时间】:2014-01-13 18:26:14 【问题描述】:我从图形 api 得到以下响应
"data": [
"name": "Mohamed Galib",
"id": "502008940"
,
"name": "Mebin Joseph",
"id": "503453614"
,
"name": "Rohith Raveendranath",
"id": "507482441"
],
"paging":
"next": "https://some_url"
我有一个结构如下
type Item struct
Name, Id string
我想解析响应并获取一个 Item 数组,我该怎么做?
【问题讨论】:
【参考方案1】:你需要像这样更新你的结构:
type Item struct
Name string `json:"name"`
Id string `json:"id"`
并添加一个结构来表示包装器:
type Data struct
Data []Item `json:"data"`
然后您可以使用json.Unmarshal
填充数据实例。
请参阅文档中的 example。
【讨论】:
另一种选择是让 JSON 和 Go 名称逐个字符匹配,但是在这种情况下,您无法控制 JSON 名称,因此您无法让您的Go 名称小写,否则 JSON API 将无法使用反射来访问它们,在这种情况下,这不是一个选项。 @dommage ,谢谢,我们不能不添加额外的结构数据吗?对于每个响应,我都必须添加一个这样的结构。 恐怕是这样。惯用的 Go 似乎涉及许多小类型定义。你习惯了:)以上是关于无法解码 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章
json.loads 错误:“utf-8”编解码器无法解码位置 0 的字节 0x83:无效的起始字节