首页 > 后端开发 > Golang > 正文

如何在 Go 中处理动态 JSON 字段类型?

Barbara Streisand
发布: 2024-11-19 03:16:02
原创
393 人浏览过

How Can I Handle Dynamic JSON Field Types in Go?

在 Go 中处理动态 JSON 字段类型

当键值的类型不断变化时,在 Go 中将 JSON 反序列化为结构化数据可能具有挑战性。例如,API 可以提供不同格式的数据,例如:

{
  "mykey": [
    {obj1},
    {obj2}
  ]
}
登录后复制
{
  "mykey": [
    "/obj1/is/at/this/path",
    "/obj2/is/at/this/other/path"
  ]
}
登录后复制

Go 的方法

要处理此类动态 JSON,请考虑使用灵活的数据结构,如下所示:

type Data struct {
    MyKey []interface{} `json:"mykey"`
}
登录后复制

此结构允许将字符串和对象存储在 MyKey 中

区分类型

JSON 反序列化后,您可以使用类型开关区分字符串和对象:

for i, v := range data.MyKey {
    switch x := v.(type) {
    case string:
        fmt.Println("Got a string: ", x)
    case map[string]interface{}:
        fmt.Printf("Got an object: %#v\n", x)
    }
}
登录后复制

This方法使您能够确定 MyKey 切片中每个元素的类型并进行相应的处理。

以上是如何在 Go 中处理动态 JSON 字段类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板