在 Go 中解组具有不同值类型的 JSON
在 Go 中,JSON 解组通常涉及将 JSON 数据映射到相应的结构。然而,当数据结构变化时,就会出现困难,将键的值呈现为对象或字符串数组。
问题:
API 提供不一致的数据结构,导致键的潜在值变化:内联对象或对对象的引用(/obj1/is/at/this/path)。
解决方案:
要处理这种可变性,请考虑以下技术:
1 。解组到接口类型:
将 JSON 数据解组到包含 []interface{} 类型字段的结构体。这将允许字符串(解码为字符串)和对象(解码为 map[string]interface{})存储在数组中。
代码示例:
type Data struct { MyKey []interface{} `json:"mykey"` }
2.用于区分的类型切换:
数据解组后,使用类型切换来区分字符串和对象。
代码示例:
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) } }
额外注意:
以上是在 Go 中解组时如何处理不同的 JSON 值类型?的详细内容。更多信息请关注PHP中文网其他相关文章!