gpt4 book ai didi

json - 如何从 golang-map 中检索数据

转载 作者:数据小太阳 更新时间:2023-10-29 03:44:34 27 4
gpt4 key购买 nike

我将我的 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"]

您使用 map[string]interface{} 声明了 b,因此 b 可以像 b["beat"] 一样使用,但是b["beat"]是接口(interface)类型的值,所以可以像b["beat"]["name"]一样使用,为此,您可以添加这些行。

var m map[string]interface{}
m = b["beat"].(map[string]interface{})
log.Println(m["name"])

它将 b["beat"] 的类型从接口(interface)转换为映射。

更多:

  1. 您可以为这个 json 字符串创建一个结构,然后您可以使用 . 符号从您的结构中获取值。就像 https://www.dotnetperls.com/json-go 中的 Unmarshal exsample

  2. 有一个包 go-simplejson可以轻松获取json值。

希望对你有帮助...

关于json - 如何从 golang-map 中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40277806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com