2 回答
TA贡献1795条经验 获得超7个赞
您应该只使用具有实际类型的简单字段声明,而不是[]如下所示的类型:
type InLicense struct {
Total int16 json:"total,omitempty"
}
type OutLicense struct {
Pagination InLicense json:"pagination,omitempty"
}
type MetaLicense struct {
Meta OutLicense json:"meta,omitempty"
}
TA贡献1785条经验 获得超4个赞
我稍微简化了解析,只使用了该json.Unmarshal()函数。
raw := "{\n \"meta\": {\n \"query_time\": 0.039130201,\n \"pagination\": {\n \"offset\": 1345,\n \"limit\": 5000,\n \"total\": 1345\n }\n }\n}"
parsed := &MetaLicense{}
err := json.Unmarshal([]byte(raw), parsed)
if err != nil {
log.Fatal(err)
}
fmt.Println(parsed.Meta.Pagination.Total) // Prints: 1345
这是我使用的类型
type InLicense struct {
Total int16 `json:"total,omitempty"`
}
type OutLicense struct {
Pagination InLicense `json:"pagination,omitempty"`
}
type MetaLicense struct {
Meta OutLicense `json:"meta,omitempty"`
}
如所写,您提供的 JSON 有一个额外的,内容,这使您的 json 无法解析(假设您也添加了缺少}的 's.
您的 JSON 中没有列表。列表用[]符号表示。为了让您的类型正常工作,您的 JSON 必须如下所示:
{
"meta": [{
"query_time": 0.039130201,
"pagination": [{
"offset": 1345,
"limit": 5000,
"total": 1345
}]
}]
}
- 2 回答
- 0 关注
- 210 浏览
添加回答
举报