是否可以使用json.Decoder解码顶级JSON数组?
或者阅读整个JSON和json.Unmarshall是这种情况下唯一的方法吗?
我已经阅读了this question中接受的答案,并且无法弄清楚如何将它与顶级JSON数组一起使用
答案 0 :(得分:5)
您以与任何其他json相同的方式使用 json.Decoder 。唯一的区别是,不是解码成结构,而是需要在struct数组中解码json。这是一个非常简单的例子。 Go Playground
package main
import (
"bytes"
"encoding/json"
"fmt"
)
type Result struct {
Name string `json:"Name"`
Age int `json:"Age`
OriginalName string `json:"Original_Name"`
}
func main() {
jsonString := `[{"Name":"Jame","Age":6,"Original_Name":"Jameson"}]`
result := make([]Result, 0)
decoder := json.NewDecoder(bytes.NewBufferString(jsonString))
err := decoder.Decode(&result)
if err != nil {
panic(err)
}
fmt.Println(result)
}
答案 1 :(得分:1)
https://play.golang.org/p/y2sKN7e8gf
请注意,建议不要使用var r interface{}
,您应该将JSON结构定义为Go struct
以正确解析它。