登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-23 21:45:28 303浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《定义类型以生成嵌套 JSON 的更好方法》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我需要使用 go 生成以下 json 输出。

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

通过封送处理生成上述 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 的更好方法》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>