一尘不染

JSON有时数组有时对象

go

我正在使用一个API,该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
{},但我有些迷茫,不确定我是否朝正确的方向前进。

任何意见,将不胜感激。


阅读 248

收藏
2020-07-02

共1个答案

一尘不染

您是否尝试将编组到map [string] interface {}中?

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

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

2020-07-02