我有一個巨大的 JSON 數(shù)組存儲在一個文件(“file.json”)中,我需要遍歷該數(shù)組并對每個元素進行一些操作。err = json.Unmarshal(dat, &all_data)導致內(nèi)存不足 - 我猜是因為它首先將所有內(nèi)容加載到內(nèi)存中。有沒有辦法按元素流式傳輸 JSON 元素?
2 回答

一只甜甜圈
TA貢獻1836條經(jīng)驗 獲得超5個贊
因此,正如評論者所建議的,您可以使用“encoding/json”的流 API 一次讀取一個字符串:
r := ... // get some io.Reader (e.g. open the big array file)
d := json.NewDecoder(r)
// read "["
d.Token()
// read strings one by one
for d.More() {
s, _ := d.Token()
// do something with s which is the newly read string
fmt.Printf("read %q\n", s)
}
// (optionally) read "]"
d.Token()
請注意,為簡單起見,我省略了需要實現(xiàn)的錯誤處理。
- 2 回答
- 0 關注
- 194 瀏覽
添加回答
舉報
0/150
提交
取消