Heim >Backend-Entwicklung >Golang >Wie kann man mehrere JSON-Objekte in Go effizient analysieren?

Wie kann man mehrere JSON-Objekte in Go effizient analysieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-22 02:56:12246Durchsuche

How to Efficiently Parse Multiple JSON Objects in Go?

Parsen mehrerer JSON-Objekte in Go

Das JSON-Parsen in Go wird mithilfe des Pakets „encoding/json“ vereinfacht. Während es mühelos Arrays von JSON-Objekten verarbeitet, entsteht die Herausforderung beim Parsen von JSON-Antworten mit mehreren Objekten, wie zum Beispiel:

{"something":"foo"}
{"something-else":"bar"}

Der bereitgestellte Code versucht, die Eingabe manuell umzuwandeln, indem er die }{-Vorkommen durch } ersetzt. {, aber dieser Ansatz ist unwirksam.

Um dieses Problem zu beheben, ist eine robustere Lösung mit einem json.Decoder erforderlich. Der Ansatz umfasst:

  1. Erstellen eines json.Decoder-Objekts aus der Eingabe.
  2. Iterieren über die Eingabe mithilfe der Decode-Methode des Decoders.
  3. Deserialisieren jedes JSON Objekt in eine benutzerdefinierte Struktur (z. B. Doc) umwandeln.

Hier ist ein Beispielimplementierung:

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)
    }
}

Diese Lösung verarbeitet mehrere JSON-Objekte in der Eingabe ordnungsgemäß und stellt deren genaue Analyse und Deserialisierung sicher.

Das obige ist der detaillierte Inhalt vonWie kann man mehrere JSON-Objekte in Go effizient analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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