【问题标题】:Parsing JSON into a struct将 JSON 解析为结构
【发布时间】:2015-06-23 22:54:35
【问题描述】:

当 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 中获取工作区列表?

【问题讨论】:

    标签: json parsing go


    【解决方案1】:

    问题是您将Workspaces 表示为模型中的数组,但它是json 中的字典/映射。只需将其设为map[sting]Workspace 即可。第一项将使用instance.Workspaces["11"]

    关于我是如何知道这一点的一些提示; 1) 工作区是用大括号{ 打开的,数组永远不是正确的类型(它们总是在 json 中被[] 包围),它是一个对象或地图。 2)其中的项目表示为"11": { ... }。这意味着如果我在 Go 中用一个对象来表示它,我需要一个名为 1112 等的属性,可以假设这不是你想要的,这意味着它必须是一个地图。

    【讨论】:

    • 非常感谢。当你回答时,它变得很明显。但几乎所有的难题都是如此:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多