Go での複数の JSON オブジェクトの解析
サーバーから次の形式で返されたものなど、複数の JSON オブジェクトが見つかった場合:
{"something":"foo"} {"something-else":"bar"}
解析は困難な場合があります。次のコード スニペットは、strings.Replace を使用するときに発生する問題を示しています。
correct_format := strings.Replace(string(resp_body), "}{", "},{", -1) json_output := "[" + correct_format + "]"
別の解決策は、効果的なデコードに json.Decoder を利用することです。
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) } }
このアプローチにより、解析が確実に成功します。共通クロール データなどのシナリオでも、複数の JSON オブジェクトのデータを共有できます。
以上がGo で複数の連続する JSON オブジェクトを効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。