如果您要使用字典,请使用Go类型
map[string]interface{}(map带有
string任何类型的键和值的Go 类型):
var data map[string]interface{}然后您可以引用其元素,例如:
data["entities"]
请参阅以下示例:
s := `{"text":"I'm a text.","number":1234,"floats":[1.1,2.2,3.3], "innermap":{"foo":1,"bar":2}}`var data map[string]interface{}err := json.Unmarshal([]byte(s), &data)if err != nil { panic(err)}fmt.Println("text =", data["text"])fmt.Println("number =", data["number"])fmt.Println("floats =", data["floats"])fmt.Println("innermap =", data["innermap"])innermap, ok := data["innermap"].(map[string]interface{})if !ok { panic("inner map is not a map!")}fmt.Println("innermap.foo =", innermap["foo"])fmt.Println("innermap.bar =", innermap["bar"])fmt.Println("The whole map:", data)输出:
text = I'm a text.number = 1234floats = [1.1 2.2 3.3]innermap = map[foo:1 bar:2]innermap.foo = 1innermap.bar = 2The whole map: map[text:I'm a text. number:1234 floats:[1.1 2.2 3.3] innermap:map[foo:1 bar:2]]
在Go Playground上尝试一下。
笔记:
基本上,如果您的地图像上面的示例一样是多层的(
map包含另一个
map)
"innermap",则在访问内部地图时,可以使用Type断言将其作为另一个地图:
innermap, ok := data["innermap"].(map[string]interface{})// If ok, innermap is of type map[string]interface{}// and you can refer to its elements.


