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

Wie kann ich mehrere aufeinanderfolgende JSON-Objekte in Go effizient analysieren?

DDD
DDDOriginal
2024-12-23 05:08:14481Durchsuche

How Can I Efficiently Parse Multiple Consecutive JSON Objects in Go?

Parsen mehrerer JSON-Objekte in Go

Beim Auftreffen mehrerer JSON-Objekte, z. B. solche, die von Servern im Format zurückgegeben werden:

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

Das Parsen kann sich als Herausforderung erweisen. Das folgende Code-Snippet zeigt Schwierigkeiten bei der Verwendung von Strings.Replace:

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

Eine alternative Lösung besteht in der Verwendung eines json.Decoder für eine effektive Dekodierung:

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

Dieser Ansatz gewährleistet eine erfolgreiche Analyse von mehreren JSON-Objekten, auch in Szenarien wie Common Crawl-Daten.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere aufeinanderfolgende 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