高效、快速地載入大量JSON 檔案
使用簡單的json.load( 時,載入大型JSON 檔案通常會導致系統記憶體資源緊張。此問題源自於需要立即將整個文件的內容載入到記憶體中。
一個潛在的解決方案是利用部分文件載入技術。對於以行分隔的文字文件,可以迭代行。 JSON 檔案是否有類似的方法?
ijson:用於 JSON 的 SAX 式解析器
在 ijson 庫中找到了此問題的解決方案。該程式庫提供了類似 SAX 的解析方法,類似於 SAX 庫處理 XML 的方式。以下概述了範例用法:
<code class="python">import ijson for prefix, the_type, value in ijson.parse(open(json_file_name)): print(prefix, the_type, value)</code>
在此程式碼中,prefix 表示JSON 樹中以點分隔的索引,the_type 指定SAX 樣式的事件類型(例如,map/array 的開始/結束) 、 null、字串等),如果the_type 是事件,則value 是物件的值或None。
限制與提示
請注意,ijson 假定鍵名稱不包含點。此外,它的文件也有些有限。建議探索原始程式碼以更深入地了解其功能。
以上是如何有效率地載入大型 JSON 檔案而不造成系統記憶體過載?的詳細內容。更多資訊請關注PHP中文網其他相關文章!