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

问题描述:

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

举例来说,如果我有像这样一个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 
} 

这是不是当前支持?

+0

我相信你无法动态,在运行时,在围棋中定义的类型。下一个最好的选择是使用代码生成。 – mkopriva

+0

你想达到什么结果? –

+0

如果你真的非结构化数据可以解组成地图样'图[字符串]接口{}' –

我不能garantantee最终的结果,但easyjson不正是你问什么。

easyjson旨在保持生成的Go代码简单,以便它可以轻松优化或修复。另一个目标是为用户提供 通过提供不 可用与标准编码/ JSON封装选项,诸如生成 “snake_case”名称或默认启用omitempty行为定制生成的代码的能力。

+0

@肯德尔 - 渭河,对于一次性的演出,你可以使用['github.com/mholt/json-to-go '](https://github.com/mholt/json-to-go),它也有一个易于使用的网站,它可以从你输入的JSON样本中生成一组Go类型。 – kostix