我需要以一种灵活的方式指定解析JSON数据的类型,这意味着类型需要在运行时指定。
考虑以下片段:http://play.golang.org/p/F-Jy4ufMPz
考虑以下片段:http://play.golang.org/p/F-Jy4ufMPz
s := `{"b":[{"x":9},{"x":4}]}`
var a struct {
B []interface{}
}
err := json.Unmarshal([]byte(s), &a)
if err != nil {
panic(err)
}
fmt.Println(a)
这将产生{[map[x:9] map[x:4]]}
。我想解码为一个特定(结构)类型的数组,而不是[]interface{}
,而不需要在编译时指定它。
如果不事先创建数组,是否有可能实现这一点?(返回的项数是未知的)
我现在唯一能想到的方法是稍后再次对返回的映射进行编码,并将它们解码为指定的类型,这将创建不必要的处理开销。