如何在其中解组具有不同类型值的json数组

时间:2014-08-15 12:45:44

标签: json go

例如:

{["NewYork",123]}

对于json数组解码为go数组,go数组需要显式定义一个类型, 我不知道如何处理它。

2 个答案:

答案 0 :(得分:7)

首先json无效,对象必须有密钥,所以它应该是{"key":["NewYork",123]}["NewYork",123]

当您处理多种随机类型时,只需使用interface{}

const j = `{"NYC": ["NewYork",123]}`

type UntypedJson map[string][]interface{}

func main() {
    ut := UntypedJson{}
    fmt.Println(json.Unmarshal([]byte(j), &ut))
    fmt.Printf("%#v", ut)
}

playground

答案 1 :(得分:3)

  

json包使用map [string] interface {}和[] interface {}值来存储任意JSON对象和数组......   http://blog.golang.org/json-and-go

对象中的每个值都必须具有键。所以假设这是你的json:

{"key":["NewYork",123]}

然后你的代码应该是这样的:

package main

import (
    "encoding/json"
    "fmt"
)

type Message map[string]interface{}

func main() {
    msg := Message{}
    s := `{"key":["Newyork",123]}`
    err := json.Unmarshal([]byte(s), &msg)
    fmt.Println(msg, err)
}

您可以运行它:http://play.golang.org/p/yihj6BZHBY