Rumah >pembangunan bahagian belakang >Golang >Bagaimana Menstrim dan Menyahkod Tatasusunan JSON Besar dengan Cekap dalam Go?

Bagaimana Menstrim dan Menyahkod Tatasusunan JSON Besar dengan Cekap dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-16 02:18:09831semak imbas

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

Menstrim Tatasusunan JSON untuk Data Besar

Menyahkod tatasusunan JSON yang besar ke dalam ingatan boleh menjadi masalah, yang membawa kepada isu ingatan. Untuk menangani perkara ini, penstriman elemen JSON ialah penyelesaian yang lebih cekap.

Pakej pengekodan/json dalam Go menyediakan mekanisme untuk menstrim elemen data JSON mengikut elemen. Berikut ialah contoh lanjutan:

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

Dalam contoh ini, kami secara eksplisit mengendalikan kurungan pembukaan dan penutup tatasusunan JSON dan menyahkod setiap elemen secara individu, membolehkan kami menstrim melalui data JSON dengan cekap tanpa overhed memori.

Atas ialah kandungan terperinci Bagaimana Menstrim dan Menyahkod Tatasusunan JSON Besar dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn