在 Go 中访问深度嵌套的 JSON 键和值
使用复杂的 JSON 数据结构时,检索深度嵌套的值可能具有挑战性单独使用标准 Go 接口。为了克服这个问题,请考虑使用 go-simplejson 包 (github.com/bitly/go-simplejson)。
该包提供了一个易于使用的 API,用于通过简单的语法导航 JSON 数据。以下是如何使用 go-simplejson 访问给定 JSON 中的“时间”值:
package main
import (
"encoding/json"
"fmt"
"github.com/bitly/go-simplejson"
)
func main() {
msg := `{"args":[{"time":"2013-05-21 16:57:17"}],"name":"send:time"}`
jsonBytes := []byte(msg)
js, err := simplejson.NewJson(jsonBytes)
if err != nil {
fmt.Println(err)
return
}
// Retrieve "time" values
timeValue, err := js.Get("args").GetIndex(0).Get("time").String()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Retrieved time:", timeValue)
}
通过使用 go-simplejson,您可以轻松遍历嵌套的 JSON 结构并使用 Get、GetIndex 和 String 等方法检索值。
对于复杂的数据结构,您还可以定义自己的自己的类型结构来表示 JSON 数据。例如,您可以创建以下结构:
type TimeInfo struct {
Time string
}
type DataStruct struct {
Name string
Args []TimeInfo
}
要将 JSON 解组到此结构中,可以使用以下代码:
var dataStruct DataStruct
err = json.Unmarshal(jsonBytes, &dataStruct)
if err != nil {
fmt.Println(err)
return
}
此方法提供了一种更结构化的方式来表示 JSON 数据,使其更易于使用和维护。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3