Parsen mehrerer JSON-Objekte in Go: Adressierung verschachtelter Objekte
Beim Umgang mit mehreren JSON-Objekten, die von einem Server in Form verschachtelter Objekte zurückgegeben werden , kann es beim Standard-Encoding/JSON-Paket zu Schwierigkeiten kommen. Dieser Artikel befasst sich mit einer Lösung, die einen json.Decoder verwendet, um solche Szenarien effektiv zu bewältigen.
Betrachten Sie das folgende Beispiel:
{"something":"foo"} {"something-else":"bar"}
Verwenden Sie den folgenden Code, um diese Daten zu analysieren:
correct_format := strings.Replace(string(resp_body), "}{", "},{", -1) json_output := "[" + correct_format + "]"
führt zu einem Fehler.
Lösung wird verwendet json.Decoder
Um dieses Problem zu beheben, verwenden wir einen json.Decoder. Ein json.Decoder liest und dekodiert JSON-Datenströme und dekodiert nacheinander einzelne JSON-Objekte aus der Eingabe.
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) } }
In dieser Lösung:
Playground und Fazit
Diese Lösung können Sie auf dem Go Playground ausprobieren: https://play.golang.org/p/ANx8MoMC0yq
Durch die Verwendung eines json.Decoder sind wir in der Lage, mehrere JSON-Objekte zu analysieren, selbst wenn sie in einer größeren JSON-Struktur verschachtelt sind.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere JSON-Objekte in Go analysieren, insbesondere wenn sie verschachtelt sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!