我是 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}]

拉莫斯之舞
TA貢獻1820條經驗 獲得超10個贊
對于JSONTypeJSON 中的結構,需要一個fields節點。相反,您可以在解組時使用 map 。
m := make(map[string]FieldMap)
err := json.Unmarshal(byteValue, &m)
- 2 回答
- 0 關注
- 185 瀏覽
添加回答
舉報
0/150
提交
取消