JSON有时候数组有时是对象

时间:2015-11-10 02:44:43

标签: json go

我正在使用一个API,它对某个特定字段的响应有时是对象,有时是对象数组。

我创建了一个结构来解组json响应,它运行得很好。但是,在json响应具有对象数组的情况下,显然解组失败。我怎样才能在Go中处理这种情况?

Single Response:
{
    "net": {
                "comment": {
                    "line": {
                        "$": "This space is statically assigned",
                        "@number": "0"
                    }
                }
            }
}


Array Response:
{
    "net": {
                "comment": {
                    "line": [
                        {
                            "$": "All abuse issues will only be responded to by the Abuse",
                            "@number": "0"
                        },
                        {
                            "$": "Team through the contact info found on handle ABUSE223-ARIN",
                            "@number": "1"
                        }
                    ]
                }
            }
}

我考虑过创建2个版本的结构,然后以某种方式确定我找回了哪个实例,但这感觉非常浪费。我也尝试过解组到map [string] instance {}但是我有点迷失,并且不确定我是不是走向了正确的道路。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

您是否尝试过unmarshall into map [string] interface {}?

    type Net struct{
        Comment map[string]interface{} `json:"comment"`
    }

然后注释[“line”]值可能是数组或对象。