在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