如何将json解组到结构的Go映射中?

amat_coder:

我是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)

} 

如果有人可以帮助我,我将不胜感激。

icza:

您输入的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将JSON解组到由另一段代码提供的Go结构中?

如果外部元素在GO中不相同,如何将嵌套json解组到结构

如何将json解组到[]人员?

如何将json压缩文件解组到结构中

如何使用Go将这个JSON数组解组到结构切片中?

使用Go(golang),如何将数据解组到结构中,然后从该结构中调用特定字段?

在Go语言中,如何将json解组到对象数组?

无法将json数据解组到go中的结构(无法将数组解组到Go struct字段中)

如何将JSON解组到持续时间?

无法将JSON解组到结构中

无法将Yaml数组映射和解组到Golang结构

将JSON解组到Go接口{}

如何将哈希值传递到无序映射中以减少持有的时间?

如何将数组中重复的值的计数存储到 C++ 中的映射中?

如何将映射传递到jsp子结构?

在mongodb-go-driver中,如何将BSON编组/解组为结构

在Go中,如何将bson byte []数据解组为结构数组?

如何将 json 对象映射到特定的 json 结构

如何将值解组为 map[string][int] 类型的 json 结构

将JSON解组到结构时如何不允许空字段

Golang将嵌套的json解组到结构中

如何将动态 XML 数据解组为结构?

将JSON解组到struct:无法将数组解组到Go值

如何将字符串附加到字符串到接口类型的映射中

如何将两个json值解组到同一变量中?

如何将JSON正文解组到骆驼中的myclass列表

创建新主机时出错:json:无法将bool解组到Go结构字段Driver.Virtio9p

如何使用golang将xml消息解组到结构中

如果我有一个嵌套映射作为多重映射的值,我如何将值插入到内部映射中?