Heim > Backend-Entwicklung > Golang > Wie kann man große JSON-Arrays in Go effizient streamen und dekodieren?

Wie kann man große JSON-Arrays in Go effizient streamen und dekodieren?

Patricia Arquette
Freigeben: 2024-12-16 02:18:09
Original
828 Leute haben es durchsucht

How to Efficiently Stream and Decode Large JSON Arrays in Go?

Streaming von JSON-Arrays für große Datenmengen

Das Dekodieren großer JSON-Arrays in den Speicher kann problematisch sein und zu Speicherproblemen führen. Um dieses Problem zu lösen, ist das Streamen von JSON-Elementen eine effizientere Lösung.

Das Paket „encoding/json“ in Go bietet einen Mechanismus zum Streamen von JSON-Daten Element für Element. Hier ist ein erweitertes Beispiel:

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "strings"
)

func main() {
    const jsonStream = `
                [
                    {"Name": "Ed", "Text": "Knock knock."},
                    {"Name": "Sam", "Text": "Who's there?"},
                    {"Name": "Ed", "Text": "Go fmt."},
                    {"Name": "Sam", "Text": "Go fmt who?"},
                    {"Name": "Ed", "Text": "Go fmt yourself!"}
                ]
            `

    type Message struct {
        Name, Text string
    }

    dec := json.NewDecoder(strings.NewReader(jsonStream))

    // Read the opening bracket.
    t, err := dec.Token()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%T: %v\n", t, t)

    // Loop through the array elements.
    for dec.More() {
        var m Message

        // Decode the current element.
        err = dec.Decode(&m)
        if err != nil {
            log.Fatal(err)
        }

        fmt.Printf("%v: %v\n", m.Name, m.Text)
    }

    // Read the closing bracket.
    t, err = dec.Token()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%T: %v\n", t, t)
}
Nach dem Login kopieren

In diesem Beispiel verarbeiten wir explizit die öffnenden und schließenden Klammern des JSON-Arrays und dekodieren jedes Element einzeln, sodass wir die JSON-Daten effizient und ohne Speicheraufwand streamen können.

Das obige ist der detaillierte Inhalt vonWie kann man große JSON-Arrays in Go effizient streamen und dekodieren?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage