在支持不同类型的属性值的同时将JSON分解为结构

时间:2018-06-27 19:05:31

标签: json go

Golang中是否有可能将JSON对象解组为一个结构,在该结构中JSON对象具有在不同情况下可以是对象或数组(或通常支持各种类型)的属性?

例如,在一种情况下,JSON可能看起来像这样:

{
    "config": {
        "source": "config.cnf"
    }
}

但与此同时,JSON也可能像这样:

{
    "config": [ "value1", "value2" ]
}

如果是这样,该结构看起来如何?

1 个答案:

答案 0 :(得分:1)

您应该解码为空接口(interface{})。因为它没有方法,所以每种类型都可以实现。

type Data struct {
    Config interface{}
}

我创建了an elaborate Playground来证明这一点。