首页 >后端开发 >Golang >如何在 Go 中解码具有可变结构的 JSON?

如何在 Go 中解码具有可变结构的 JSON?

Patricia Arquette
Patricia Arquette原创
2025-01-01 01:58:11665浏览

How Can I Decode JSON with a Variable Structure in Go?

使用可变结构解码 JSON

使用 JSON 数据时,处理变化的数据结构可能具有挑战性。在这种情况下,使用固定结构的传统方法(例如 json.Unmarshal())变得不切实际。以下是针对此场景的解决方案:

解决方案:解组到 map[string]interface{}

我们可以将 JSON 解组为通用 map[string]interface{} 类型。这使我们能够处理具有不同结构的 JSON 数据。

考虑以下 JSON:

{ "votes": { "option_A": "3" } }

要向此 JSON 添加“count”键,我们可以按如下方式对其进行解组:

package main

import (
    "encoding/json"
)

func main() {
    in := []byte(`{ "votes": { "option_A": "3" } }`)
    var raw map[string]interface{}
    if err := json.Unmarshal(in, &raw); err != nil {
        panic(err)
    }
    raw["count"] = 1
    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }
    println(string(out))
}

这种方法可以让我们轻松修改 JSON 结构,而无需绑定到固定的数据模型。 map[string]interface{} 类型提供了处理动态 JSON 结构的灵活性。

以上是如何在 Go 中解码具有可变结构的 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn