【发布时间】:2016-08-02 09:10:38
【问题描述】:
是否可以使用 json.Decoder 解码顶级 JSON 数组?
或者在这种情况下读取整个 JSON 和 json.Unmarshall 是唯一的方法?
我已阅读this question 中接受的答案,但无法弄清楚如何将其与顶级 JSON 数组一起使用
【问题讨论】:
标签: json go unmarshalling json-deserialization
是否可以使用 json.Decoder 解码顶级 JSON 数组?
或者在这种情况下读取整个 JSON 和 json.Unmarshall 是唯一的方法?
我已阅读this question 中接受的答案,但无法弄清楚如何将其与顶级 JSON 数组一起使用
【问题讨论】:
标签: json go unmarshalling json-deserialization
您使用 json.Decoder 的方式与任何其他 json 相同。唯一的区别是,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)
}
【讨论】:
https://play.golang.org/p/y2sKN7e8gf
请注意,不推荐使用var r interface{},您应该将JSON 结构定义为Go struct 以正确解析它。
【讨论】: