在 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中文网其他相关文章!