将 JSON 解析为结构体

当它们具有常规键值格式时,我已成功将 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 中获取工作区列表?


跃然一笑
浏览 206回答 1
1回答

芜湖不芜

问题是您Workspaces在模型中表示为数组,但它是 json 中的字典/映射。只要让它成为一个map[sting]Workspace,你应该会很好。第一个项目将与instance.Workspaces["11"]关于我是如何知道的一些提示;1)工作区用大括号打开{,数组永远不是正确的类型(它们总是包含[]在 json 中),它是一个对象或地图。2) 其中的项目表示为"11": { ... }。这意味着如果我在 Go 中用一个对象来表示它,我需要一个名为11, 12ect的属性,可以很安全地假设这不是你想要的,这意味着它必须是一个地图。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go