将 JSON 解析为结构

Posted

技术标签:

【中文标题】将 JSON 解析为结构【英文标题】:Parsing JSON into a struct 【发布时间】: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 中获取工作区列表?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

非常感谢。当你回答时,它变得很明显。但几乎所有的难题都是如此:)

以上是关于将 JSON 解析为结构的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftyJSON 将 JSON 解析为结构

kafka 到 pyspark 结构化流,将 json 解析为数据帧

Go 语言入门很简单 -- Go 语言解析JSON #私藏项目实操分享#

在 Scala / Spark 中将 JSON 结构解析为 JSON 对象

将json字符串解析为具有复杂数据结构的java(jackson)

解析嵌套的 Json 数据结构?