json - 定义类型以生成嵌套 JSON 的更好方法

标签 json go

我需要使用 Go 生成以下 JSON 输出。

{
  "id": "zx222",
  "links": {
    "main_entity": {
      "data": [{
        "type": "car",
        "id": "abc123"
      }]
    }
  }
}

通过编码(marshal)处理生成上述 JSON 的直接方法是使用以下类型

type Element struct{
  Id    string      `json:"id"`
  Links LinksObject `json:"links"`
}

type LinksObject struct{
  MainEntity MainEntityObject `json:"main_entity"`
}

type MainEntityObject struct{
  Data []EntityDef `json:"data"`
}

type EntityDef struct{
  Type string `json:"type"`
  Id   string `json:"id"`
}

是否有更好的方法来生成上述 JSON,而无需定义每个结构只是为了嵌套结构?

在问题背后添加一些我的想法。由于消息的包装方式,原始 JSON 具有额外的嵌套级别。但它们不一定具有任何意义,否则将它们定义为仅用于解码/编码为 JSON 的数据类型似乎没有必要。

最佳答案

type Element struct {
    ID    string `json:"id"`
    Links struct {
        MainEntity struct {
            Data []struct {
                Type string `json:"type"`
                ID   string `json:"id"`
            } `json:"data"`
        } `json:"main_entity"`
    } `json:"links"`
}

关于json - 定义类型以生成嵌套 JSON 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60606915/

相关文章:

java - 解析具有后代元素的 JSON 列表

go - 在 glog 包中设置日志记录级别

go - 如何将 Golang 项目(一组包)放到 Github?

google-app-engine - Google 日历与 Google App Engine 的集成

Go atomic store 后跟 atomic load 在整个例程中表现不正常

go - 作为一个单元测试用例,应该为这样的函数编写什么。代码片段会有所帮助

javascript - 使用 Knockout JS 进行数据绑定(bind)不起作用

java - 如何从Gson链接获取数据

json - 我的 textlabel 和 detailtextLabel 显示相同的文本

json - 具有多个数据的 GoLang JSON 负载准备