2 回答

TA貢獻1831條經驗 獲得超9個贊
當編譯時密鑰未知時,您實際上只能使用map[string]interface{}然后一些輔助函數來導航該結構。
如果鍵字面上是 a1、a2、a3 等......你可以制作一個實際的結構,但它不會很漂亮,因為你必須拼出每個鍵。
通常,當文檔的鍵是數據的一部分時,您無法真正創建靜態結構。
我所說的“部分數據”是指:
{
"billy":23,
"tommy":24
}
對比
[
{"name":"billy", "age":23},
{"name":"tommy", "age":24}
]
第二種形式可以表示為:struct { Name string, Age int }
而第一個實際上只能是: map[string]int 或 map[string]interface{} (如果結構很深)

TA貢獻1821條經驗 獲得超6個贊
最好先定義所需的結構(將嵌套結構作為級別)。然后實現UnmarshalJSON([]byte) 錯誤接口將傳入的數據轉換為所需的結構。
我不想寫很長的例子,除非我確定你想要什么 =) 我想采用與在 Go 中合并動態數據結構中使用的方法類似的方法。
你需要那些 "A1".."ZN", ("a1".."an")...("z1".."zn") 鍵嗎?還是切片就足夠了?喜歡:
type S struct {
ID bson.ObjectId
Data [][][]string
}
或者可能是內部轉換 []string
[
"abc",
"def",
"ghi"
]
對于某些結構,如果只有 3 個元素?
- 2 回答
- 0 關注
- 300 瀏覽
添加回答
舉報