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