首页 > 后端开发 > Golang > 如何在 Go 中解析动态 JSON 键并提取特定字段?

如何在 Go 中解析动态 JSON 键并提取特定字段?

Susan Sarandon
发布: 2025-01-04 04:54:40
原创
120 人浏览过

How to Parse Dynamic JSON Keys and Extract Specific Fields in Go?

Golang 中的动态 JSON 键解析

在 JSON 解析领域,有时会遇到 JSON 字符串顶层动态键的挑战。假设我们有以下 JSON:

j := `{"bvu62fu6dq": {
           "name": "john",
           "age": 23,
           "xyz": "weu33s"
           .....
           .....}
      }`
登录后复制

任务是从该 JSON 中提取“name”和“age”的值,但键“bvu62fu6dq”是动态的,并且因情况而异。

一种方法是定义一个容纳此动态键结构的结构:

type Info struct {
   UniqueID map[string]string
 }
登录后复制

但是,这结构在处理“姓名”和“年龄”的实际提取方面面临挑战。

为了有效解析这种动态 JSON 结构,我们可以利用 Golang 中“encoding/json”包的强大功能。这是一个解决方案:

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

type Info map[string]Person
登录后复制

此设置采用更灵活的方法,通过使用由动态顶级密钥(例如“bvu62fu6dq”)作为密钥的映射。 “Person”结构封装了我们试图从每个动态子对象中提取的数据(例如“name”和“age”)。

通过此设置,解码 JSON 并提取特定值变得简单:

var info Info

err := json.Unmarshal([]byte(j), &info)
if err != nil {
    // Handle error
}

fmt.Printf("%s: %d\n", info["bvu62fu6dq"].Name, info["bvu62fu6dq"].Age)
登录后复制

这个全面的解决方案不仅可以处理动态顶级 JSON 键,还支持提取特定字段(例如“姓名”和“年龄”)来自每个子对象。

以上是如何在 Go 中解析动态 JSON 键并提取特定字段?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板