Heim > Backend-Entwicklung > Golang > Wie kann ich mehrere JSON-Objekte in Go analysieren, insbesondere wenn sie verschachtelt sind?

Wie kann ich mehrere JSON-Objekte in Go analysieren, insbesondere wenn sie verschachtelt sind?

DDD
Freigeben: 2024-12-26 09:03:09
Original
790 Leute haben es durchsucht

How Can I Parse Multiple JSON Objects in Go, Especially When They're Nested?

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"}
Nach dem Login kopieren

Verwenden Sie den folgenden Code, um diese Daten zu analysieren:

correct_format := strings.Replace(string(resp_body), "}{", "},{", -1)
json_output := "[" + correct_format + "]"
Nach dem Login kopieren

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)
    }
}
Nach dem Login kopieren

In dieser Lösung:

  • Ein json.Decoder wird initialisiert um aus einer Zeichenfolge zu lesen, die die JSON-Daten enthält.
  • Eine Schleife durchläuft den Stream und dekodiert jedes JSON-Objekt in ein Dokumentstruktur.
  • Die Dekodierung wird fortgesetzt, bis io.EOF (Ende der Datei) erreicht wird, was das Ende des Streams anzeigt.
  • Jedes erfolgreich dekodierte Objekt wird gedruckt.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage