Unmarshal json 具有多种类型的数据,没有键

假设我有这样的json:


{

      "a": [

            [

            "aaa",

            15

            ],

            [

            "bbb",

            11

            ]

        ]

    }

我有这个代码:


func main() {

    XJson := `

    {

      "a": [

            [

            "aaa",

            15

            ],

            [

            "bbb",

            11

            ]

        ]

    }`


    var Output StructJson


    json.Unmarshal([]byte(XJson), &Output)


    fmt.Println(Output)

}


type StructJson struct {

    [][]string `json:"a"`  //wrong because have 15 and 11 have int type data

    ///what must i do in here?

}




如何解组?我的意思是,“aaa”和“bbb”具有数据字符串类型,15 和 11 具有数据整数类型。如果我使用那个“错误”的结构,输出是


{[[aaa ] [bbb ]]}


一只斗牛犬
浏览 96回答 1
1回答

智慧大石

为了解决这类问题,我们可以使用interface{}这里如何使用它:package mainimport (    "encoding/json"    "fmt"    "reflect")func main() {    XJson := `    {      "a": [            [            "aaa",            15            ],            [            "bbb",            11            ]        ]    }`    var Output StructJson    json.Unmarshal([]byte(XJson), &Output)    fmt.Println("Output:", Output)    // Prints: aaa string    fmt.Println("Data on path Output.A[0][0]:", Output.A[0][0], reflect.TypeOf(Output.A[0][0]))    // Prints: 15 float64    fmt.Println("Data on path Output.A[0][1]:", Output.A[0][1], reflect.TypeOf(Output.A[0][1]))}type StructJson struct {    A [][]interface{} `json:"a"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go