我将json数据放在Unmarsha1上。我如何检索类似的数据
log.Print(b["beat"]["name"])
但是我该如何检索数据
log.Print(b [“beat”] [“name”])->无法获取数据
我的代码如下:
var b map[string]interface{}
data := []byte(`
{"foo":1,"beat":{"@timestamp":"2016-10-27T12:02:00.352Z","name":"localhost.localdomain","version":"6.0.0-alpha1"}}
`)
err := json.Unmarshal(data, &b)
if err != nil{
fmt.Println("error: ", err)
}
log.Print(b)
log.Print(b["beat"]["name"])
谢谢
最佳答案
您收到错误原因b["beat"]
不是 map ,所以您不能使用b["beat"]["name"]
。
您使用b
声明map[string]interface{}
,因此b
可以像b["beat"]
一样使用,但是b["beat"]
是接口类型的值,因此它可以像b["beat"]["name"]
一样使用,为此您可以添加这些行。
var m map[string]interface{}
m = b["beat"].(map[string]interface{})
log.Println(m["name"])
它将
b["beat"]
的类型从界面转换为 map 。有关更多:
.
符号从该结构中获取值。像https://www.dotnetperls.com/json-go 希望这可以帮到你...