亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在golang中構建動態結構?

如何在golang中構建動態結構?

Go
慕娘9325324 2022-01-17 11:00:08
我有這個 json 文件,在這個 json 文件中,我們看到 A1,B1 有 n 個鍵...................... ...................................zn, a1,a2... ..................................................... ....................一個,b1 .................... ......................................................bn 等。     {        "_id": "5746992a54c1ae24d53ce651",        "A1": [            {                "a1": [                    "abc",                    "def",                    "ghi"                ]            },            {                "a2": [                    "abc",                    "def",                    "ghi"                ]            },    .    .    ,             {                "an": [                    "abc",                    "def",                    "ghi"                ]            }        ],        "B1": [            {                "b1": [                    "abc",                    "def",                    "ghi"                ]            },            {                "b2": [                    "abc",                    "def",                    "ghi"                ]            },            {                "bn": [                    "abc",                    "def",                    "ghi"                ]            }        ],    .    .    .    ,        "Bn": [            {                "b1": [                    "abc",                    "def",                    "ghi"                ]            },            {                "b2": [                    "abc",                    "def",                    "ghi"                ]如何在 golang 中調用它們的結構type Level1 struct {    TAGID     bson.ObjectId       `json:"_id" bson:"_id"`    LEVELTAG2 []Level2            `json:"level2" bson:"level2"`     }type LevelTag2 struct{        LEVEL3 []string           `json:"level3" bson:"level3"`}我在golang中構建這個結構是正確的方式還是其他方式請幫助我
查看完整描述

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{} (如果結構很深)


查看完整回答
反對 回復 2022-01-17
?
達令說

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 個元素?


查看完整回答
反對 回復 2022-01-17
  • 2 回答
  • 0 關注
  • 300 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號