Go で深くネストされた JSON キーと値にアクセスする
複雑な JSON データ構造を扱う場合、深くネストされた値を取得するのが困難になる場合があります標準の Go インターフェイスのみを使用します。これを解決するには、go-simplejson パッケージ (github.com/bitly/go-simplejson) の利用を検討してください。
このパッケージは、単純な構文を通じて JSON データをナビゲートするための使いやすい API を提供します。 go-simplejson を使用して、指定された JSON 内の「時刻」値にアクセスする方法は次のとおりです。
<code class="go">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) }</code>
go-simplejson を使用すると、ネストされた JSON 構造を簡単に横断し、Get、などのメソッドを使用して値を取得できます。 GetIndex および String.
複雑なデータ構造の場合、JSON データを表す独自の型構造体を定義することもできます。たとえば、次の構造体を作成できます。
<code class="go">type TimeInfo struct { Time string } type DataStruct struct { Name string Args []TimeInfo }</code>
JSON をこの構造体にアンマーシャリングするには、次のコードを使用できます。
<code class="go">var dataStruct DataStruct err = json.Unmarshal(jsonBytes, &dataStruct) if err != nil { fmt.Println(err) return }</code>
このアプローチは、より構造化された方法を提供します。 JSON データを表すため、操作と保守が容易になります。
以上がGo で深くネストされた JSON キーと値にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。