然后你将json解组成一个结构。问题是我有一个api可能会改变从请求到请求的密钥值的类型。
例如可能是内联对象的对象:
{
"mykey": [
{obj1},
{obj2}
]
}
但也按键指向对象,如下所示:
{
"mykey": [
"/obj1/is/at/this/path",
"/obj2/is/at/this/other/path"
]
}
某些对象可以内联,但其他对象可以从多个位置引用。
在javascript或python中,这不是问题。只需检查类型。
什么是解组和解析这两个对象的惯用方法?反映是唯一的方法吗?
答案 0 :(得分:3)
您可以将此JSON解组为如下结构:
type Data struct {
MyKey []interface{} `json:"mykey"`
}
如果JSON包含字符串,它们将被解码为数组中的字符串。如果JSON包含对象,则它们将被解码为map[string]interface{}
值。您可以使用type switch来区分这两者。像这样:
for i, v := range data.MyKey {
switch x := v.(type) {
case string:
fmt.Println("Got a string: ", x)
case map[string]interface{}:
fmt.Printf("Got an object: %#v\n", x)
}
}
您可以在此处使用此示例:http://play.golang.org/p/PzwFI2FSav