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