Go での複数の JSON オブジェクトの解析: ネストされたオブジェクトのアドレス指定
サーバーからネストされたオブジェクトの形式で返された複数の JSON オブジェクトを処理する場合、標準のエンコーディング/json パッケージでは問題が発生する可能性があります。この記事では、このようなシナリオを効果的に処理するための json.Decoder を使用したソリューションについて詳しく説明します。
次の例を考えてみましょう:
{"something":"foo"} {"something-else":"bar"}
次のコードを使用してこのデータを解析します:
correct_format := strings.Replace(string(resp_body), "}{", "},{", -1) json_output := "[" + correct_format + "]"
はエラーになります。
を使用した解決策json.Decoder
この問題に対処するために、json.Decoder を利用します。 json.Decoder は、JSON データ ストリームのように読み取り、デコードし、入力から個々の JSON オブジェクトを順番にデコードします。
package main import ( "encoding/json" "fmt" "io" "log" "strings" ) var input = ` {"foo": "bar"} {"foo": "baz"} ` type Doc struct { Foo string } func main() { dec := json.NewDecoder(strings.NewReader(input)) for { var doc Doc err := dec.Decode(&doc) if err == io.EOF { // all done break } if err != nil { log.Fatal(err) } fmt.Printf("%+v\n", doc) } }
このソリューションでは:
遊び場と結論
できることGo プレイグラウンドでこのソリューションを試してみてください: https://play.golang.org/p/ANx8MoMC0yq
json.Decoder を使用すると、複数の JSON オブジェクトがネストされている場合でも、それらを解析できます。より大きな JSON 構造。
以上がGo で複数の JSON オブジェクト (特に入れ子になっている場合) を解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。