串流大型JSON 檔案
嘗試一次載入所有資料時,從檔案解碼大量JSON 陣列可能會遇到記憶體問題。為了解決這個挑戰,可以採用串流技術。
在提供的範例中,在大量 JSON 檔案上使用 json.Unmarshal 會因整個陣列載入而導致記憶體耗盡。
為了避免這種情況,考慮依序串流 JSON 元素。以下是基於 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) } }
透過串流傳輸元素,程式碼按順序處理它們,從而減少記憶體消耗。請注意,此範例基於字串輸入;可以根據需要對其進行修改以從文件中讀取。
以上是如何在Go中高效處理大型JSON檔案以避免記憶體耗盡?的詳細內容。更多資訊請關注PHP中文網其他相關文章!