Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Memproses Fail JSON Besar dengan Cekap dalam Go untuk Mengelakkan Keletihan Memori?
Menstrim Fail JSON Skala Besar
Menyahkod tatasusunan JSON besar-besaran daripada fail boleh menghadapi masalah memori apabila cuba memuatkan semua data sekaligus. Untuk menangani cabaran ini, teknik penstriman boleh digunakan.
Dalam contoh yang disediakan, menggunakan json.Unmarshal pada fail JSON yang meluas mengakibatkan kehabisan memori akibat pemuatan keseluruhan tatasusunan.
Untuk mengelakkan ini , pertimbangkan menstrim elemen JSON secara berurutan. Berikut ialah pendekatan berdasarkan contoh dokumentasi Golang:
import ( "encoding/json" "fmt" "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)) for dec.More() { var m Message if err := dec.Decode(&m); err != nil { fmt.Println(err) return } fmt.Printf("%v: %v\n", m.Name, m.Text) } }
Dengan menstrim elemen, kod memprosesnya secara berurutan, mengurangkan penggunaan memori. Ambil perhatian bahawa contoh ini adalah berdasarkan input rentetan; ia boleh diubah suai untuk membaca daripada fail mengikut keperluan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memproses Fail JSON Besar dengan Cekap dalam Go untuk Mengelakkan Keletihan Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!