从Go中的JSON文件动态定义结构

时间:2017-10-28 20:48:44

标签: json go struct

我想基于JSON文件在Go项目中动态定义结构。

例如,如果我有一个像这样的json文件......

{
  "date": "today",
  "time": 12,
  "era": "never",
  "alive": true
}

然后我希望生成一个结构(看起来像这样)(但没有在源代码中明确定义)......

type DynamicJSON struct {
  date, era string
  time int
  alive bool
}

此外,我想嵌套JSON对象,以便我可以做这样的事情......

{
  "date": "today",
  "time": 12,
  "era": "never",
  "alive": true,
  "nested": {
    "date": "tomorrow",
    "alive": true
  }
}

......实际上会产生两种不同的结构,比如......

type DynamicJSON1 struct {
      date, era string
      time int
      alive bool
}


type DynamicJSON2 struct {
      date string
      alive bool
}

这是目前支持的内容吗?

1 个答案:

答案 0 :(得分:2)

我无法保证最终结果,但easyjson完全符合您的要求。

  

easyjson旨在保持生成的Go代码足够简单,以便它可以   易于优化或修复。另一个目标是为用户提供   通过提供选项而无法自定义生成的代码的能力   可用标准编码/ json包,例如生成   " snake_case"默认情况下命名或启用omitempty行为。