在没有声明类型关系的情况下解码golang中的json?

时间:2014-05-01 09:10:46

标签: json go

我不想指定我的json的类型,因为它们非常混乱和复杂,我只是想让它们加载到内存中,并在需要时执行查找。

使用python等动态语言很容易,例如

data = json.loads(str)
if "foo" in data:
   ...

如何在go中做同样的事情?

2 个答案:

答案 0 :(得分:1)

您可以解组为interface{}值来解码任意JSON。

http://blog.golang.org/json-and-go

为例
b := []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]}`)
var f interface{}
if err := json.Unmarshal(b, &f); err != nil {
    ... handle error
}

您需要使用类型开关来访问以这种方式解码的数据。例如:

age := f.(map[string)interface{})["Age"].(int)

答案 1 :(得分:0)

这是一个让我更容易理解的例子,我希望它对你也有用: https://gobyexample.com/json。寻找“任意”一词