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

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

Susan Sarandon
Susan Sarandon原创
2025-01-04 04:54:40128浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn