2017-10-28 49 views
0

我想基於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

如果你真的非結構化數據可以解組成地圖樣'圖[字符串]接口{}' –

回答

2

我不能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