3 回答
TA贡献1836条经验 获得超13个赞
标准encoding/json适用于大多数用例,但与替代解决方案相比,它可能相当慢。如果您需要性能,请尝试使用fastjson。它可以解析任意 JSON,而无需创建与 JSON 模式匹配的结构或映射。
请参阅下面的示例代码。它遍历(key, value)JSON 对象的所有对:
var p fastjson.Parser
v, err := p.Parse(input)
if err != nil {
log.Fatal(err)
}
// Visit all the items in the top object
v.GetObject().Visit(func(k []byte, v *fastjson.Value) {
fmt.Printf("key=%s, value=%s\n", k, v)
// for nested objects call Visit again
if string(k) == "nested" {
v.GetObject().Visit(func(k []byte, v *fastjson.Value) {
fmt.Printf("nested key=%s, value=%s\n", k, v)
})
}
})
TA贡献1900条经验 获得超5个赞
只是添加一个关于如何解析任何有效 JSON 的一般答案;var m interface{}适用于所有类型。这包括映射(OP 要求的)数组、字符串、数字和嵌套结构。
var m interface{}
err := json.Unmarshal([]byte(input), &m)
if err != nil {
panic(err)
}
fmt.Println(m)
- 3 回答
- 0 关注
- 147 浏览
添加回答
举报