例如:
{["NewYork",123]}
对于json数组解码为go数组,go数组需要显式定义一个类型, 我不知道如何处理它。
答案 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)
}
答案 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)
}