使用json.Decoder解码顶级JSON数组

问题描述 投票:2回答:2

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

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

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

json go unmarshalling json-deserialization
2个回答
5
投票

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

1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.