使用 json.Decoder 解码顶级 JSON 数组
Decoding top level JSON array with json.Decoder
是否可以使用 json.Decoder 解码顶级 JSON 数组?
或者在这种情况下读取整个 JSON 和 json.Unmarshall 是唯一的方法?
我已阅读 this question 中已接受的答案,但无法弄清楚如何将其用于顶级 JSON 数组
https://play.golang.org/p/y2sKN7e8gf
请注意,不建议使用 var r interface{}
,您应该将 JSON 结构定义为 Go struct
以正确解析它。
您使用 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)
}
是否可以使用 json.Decoder 解码顶级 JSON 数组?
或者在这种情况下读取整个 JSON 和 json.Unmarshall 是唯一的方法?
我已阅读 this question 中已接受的答案,但无法弄清楚如何将其用于顶级 JSON 数组
https://play.golang.org/p/y2sKN7e8gf
请注意,不建议使用 var r interface{}
,您应该将 JSON 结构定义为 Go struct
以正确解析它。
您使用 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)
}