Go で深くネストされた JSON キーと値にアクセスする
複雑な JSON データ構造を扱う場合、深くネストされた値を取得するのが困難になる場合があります標準の Go インターフェイスのみを使用します。これを解決するには、go-simplejson パッケージ (github.com/bitly/go-simplejson) の利用を検討してください。
このパッケージは、単純な構文を通じて JSON データをナビゲートするための使いやすい API を提供します。 go-simplejson:
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