1 回答
TA贡献1155条经验 获得超0个赞
我假设你发布了不正确的 JSON,假设它是'{"hello": "world"} 一个具有预定义字段的结构,并且任意 JSON 进入它是不可能提前知道的。可能的解决方案是将其转换为地图。
var data interface{}
b := []byte(`{"hello": "world"}`)
err := json.Unmarshal(b, &data)
if err != nil {
panic(err)
}
fmt.Print(data)
当您打印出数据时,您可能会得到类似的信息。 map[hello:world]
其形式为map[string]interface{}.
然后您可以使用类型 switch 循环到映射结构中,直到您输入 assert所有interface{}.
for k, v := range data.(map[string]interface{}) {
switch val := v.(type) {
case string:
v = val
default:
fmt.Println(k, "is unknown type")
}
}
在处理任意传入的 JSON 时,Map 是一种理想的数据结构。但是,如果 JSON 是从具有预定义架构的 SQL 表生成的,您可以使用具有相同结构的结构而不是映射。
type Hello struct {
Hello string `json:"hello"`
}
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报