【问题标题】:Decoding top level JSON array with json.Decoder使用 json.Decoder 解码顶级 JSON 数组
【发布时间】:2016-08-02 09:10:38
【问题描述】:

是否可以使用 json.Decoder 解码顶级 JSON 数组?

或者在这种情况下读取整个 JSON 和 json.Unmarshall 是唯一的方法?

我已阅读this question 中接受的答案,但无法弄清楚如何将其与顶级 JSON 数组一起使用

【问题讨论】:

    标签: json go unmarshalling json-deserialization


    【解决方案1】:

    您使用 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)
    }
    

    【讨论】:

      【解决方案2】:

      https://play.golang.org/p/y2sKN7e8gf

      请注意,不推荐使用var r interface{},您应该将JSON 结构定义为Go struct 以正确解析它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-16
        • 2017-09-20
        • 1970-01-01
        • 2017-11-20
        • 1970-01-01
        • 2020-01-15
        相关资源
        最近更新 更多