使用Golang解析一个带有动态键的JSON

41

我有一个以下的 JSON 字符串:

j := `{"bvu62fu6dq": {
           "name": "john",
           "age": 23,
           "xyz": "weu33s"
           .....
           .....}
      }`

我想从上面的JSON字符串中提取nameage的值。 我看了golang网站上给出的这个例子http://play.golang.org/p/YQgzP7KPp9

但我的问题是顶层JSON中的键是动态的。 这意味着bvu62fu6dq是动态的。 我创建了这样的结构体:

 type Info struct {
   UniqueID map[string]string
 }

但不确定如何提取nameage。我的代码在http://play.golang.org/p/Vbdkd3XIKc

1个回答

65

我相信你想要的是这样的:

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

type Info map[string]Person

然后,解码后它就可以正常工作:

fmt.Printf("%s: %d\n", info["bvu62fu6dq"].Name, info["bvu62fu6dq"].Age)

完整示例:http://play.golang.org/p/FyH-cDp3Na


1
正如我所说,我的键是动态的,它不会永远是bvu62fu6dq。因此,我不能使用info["bvu62fu6dq"].Name - JVK
12
没问题,info 是一个普通的映射表。您可以像操作其他映射表一样遍历所有键或访问任何特定的键。 - Gustavo Niemeyer
@JVK 如果bvu62fu6dq旁边还有其他键,该如何处理呢? 例如: { "bvu62fu6dq": { "name": "john", "age": 23 }, "city": "NJ" } - Somesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接