【问题标题】:Golang parse a json with DYNAMIC key [duplicate]Golang 使用 DYNAMIC 键解析 json [重复]
【发布时间】:2013-08-27 01:17:30
【问题描述】:

我有一个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

【问题讨论】:

    标签: go


    【解决方案1】:

    我相信你想要这样的东西:

    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

    【讨论】:

    • 正如我所说,我的密钥是动态的,它不会总是bvu62fu6dq,因此我不能使用info["bvu62fu6dq"].Name
    • 当然,而且 info 是法线贴图。您可以像往常一样遍历所有键或访问任何特定键
    • @JVK 如果有其他与 bvu62fu6dq 平行的键,该怎么做。例如 {"bvu62fu6dq": { "name": "john", "age": 23, }, "city": "NJ" }`
    猜你喜欢
    • 2019-02-20
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2017-07-23
    • 1970-01-01
    • 2018-01-27
    相关资源
    最近更新 更多