当我们使用常规键值格式时,我已成功将JSON解析为结构。
但是,我如何解析这样的JSON:
{
"count": 2,
"results": [{ key: "workspaces", id: "10" }, { key: "workspaces", id: "11" }],
"workspaces": {
"10": {
id: "10",
title: "some project",
participant_ids: ["2", "6"],
primary_counterpart_id: "6"
},
"11": {
id: "11",
title: "another project",
participant_ids: ["2", "8"],
primary_counterpart_id: "8"
}
}
}
workspaces
部分的密钥未提前定义,而是保留工作区ID?
我最初的结构是:
type WorkspaceRequest struct {
Count int64 `json:"count"`
Workspaces []Workspace `json:"workspaces"`
}
type Workspace struct {
Title string `json:"title"`
}
如何从显示的JSON中获取工作区列表?
答案 0 :(得分:6)
问题在于您将Workspaces
表示为模型中的数组,但它是json中的字典/地图。只需将其设为map[sting]Workspace
即可。第一项将与instance.Workspaces["11"]
有几条暗示我是怎么知道的; 1)使用大括号{
打开工作区,数组永远不是正确的类型(它们总是被json中的[]
括起来),它是一个对象或一个地图。 2)其中的项目表示为"11": { ... }
。这意味着如果我用Go中的对象表示它我需要一个名为11
,12
等的属性,可以非常安全地假设这不是你想要的,这意味着它必须是地图。