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

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

如何將 json 解組為 Go 結構映射?

如何將 json 解組為 Go 結構映射?

Go
米琪卡哇伊 2022-06-13 17:28:32
我是 Go 新手,我很難處理 json 文件。我有 JSON 數據,我想將其轉換為 map[string]*SomeStruct 類型的地圖示例 JSON:{        "Component":         {                "fieldName": "component.name",                 "fieldType": "STR"         },        "Collection": {                     "fieldName": "collection",                 "fieldType": "INT"        },        "OldgenUse" : {                     "fieldName" : "oldgen.use",                         "fieldType": "INT"              },    }我想閱讀 JSON 并構建這樣的地圖:    expcMetadata := map[string]*FieldMap{            "Component":    {FieldName: "component.name", FieldType: "STR"},            "Collection":   {FieldName: "collection", FieldType: "INT"},            "OldGenUse":    {FieldName: "oldgen.use", FieldType: "INT"},}我能夠解組為 map[string]interface{}。如何解組為 map[string]*FieldMap我的代碼給了我一張空地圖:type FieldMap struct {    FieldName string `json:"fieldName"`    FieldType        string `json:"fieldType"`}type JSONType struct {    FieldSet map[string]FieldMap `json:"fields"`}func main() {    jsonFile, er := os.Open("fields.json")    if er != nil {        fmt.Println(er)    }    fmt.Println("Successfully Opened users.json")    defer jsonFile.Close()    byteValue, _ := ioutil.ReadAll(jsonFile)    // var m map[string]interface{}    var m JSONType    err := json.Unmarshal(byteValue, &m)    if err != nil {        log.Fatal(err)    }        fmt.Println(m)} 如果有人可以幫助我解決這個問題,我將不勝感激。
查看完整描述

2 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

您的輸入 JSON 是一個對象,因此直接將其編組到地圖中。包裝器JSONType是不必要的。


var m map[string]FieldMap

err := json.Unmarshal(byteValue, &m)

if err != nil {

    log.Fatal(err)

}

在Go Playground上查看一個工作示例,輸出為:


map[Collection:{collection INT} Component:{component.name STR} OldgenUse:{oldgen.use INT}]



查看完整回答
反對 回復 2022-06-13
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

對于JSONTypeJSON 中的結構,需要一個fields節點。相反,您可以在解組時使用 map 。


m := make(map[string]FieldMap)

err := json.Unmarshal(byteValue, &m)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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