我是Go的新手,现在很难处理json文件。我有要转换为map [string] * SomeStruct类型的映射的JSON数据
样本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 {}中。如何解组到地图[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)
}
如果有人可以帮助我,我将不胜感激。
您输入的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}]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句