載入並解析包含多個JSON 物件的JSON 檔案
與標準JSON 檔案不同,標準JSON 檔案將所有資料封裝在單一在物件或陣列中,某些JSON 格式將各個物件儲存為文字檔案中的單獨行。當嘗試在 Python 中解析此類檔案時,這可能會帶來挑戰。
解決ValueError
使用Python 的json.load() 函數載入JSON 檔案時對於多個對象,您可能會遇到「ValueError:額外資料」異常。此錯誤表示檔案在第一個解析物件之後包含意外資料。
解決方案:逐行解析
要處理此問題,您需要處理文件中的每一行作為獨立的 JSON 物件。將目前程式碼替換為以下內容:
import json data = [] with open('file') as f: for line in f: data.append(json.loads(line))
此程式碼迭代檔案中的每一行,將其解析為 JSON 對象,並將其附加到列表中。
大檔案的注意事項
如果 JSON 檔案特別大,將所有物件附加到單一清單可能會消耗過多的記憶體。為了緩解這種情況,請在進入下一行之前單獨處理每個物件。避免:
data = [] # List of all objects
而是根據需要處理每個物件:
for line in f: process_object(json.loads(line))
處理分隔的 JSON 物件
如果您的 JSON文件包含單一對象由分隔符號(例如逗號或換行符)分隔的對象,您可以使用以下技術來解析每個對象對象:
import json, io # Read delimited JSON objects from a file with open('file') as f: json_string = f.read() # Create a buffered reader json_buffer = io.StringIO(json_string) while True: # Read next JSON object from the buffer json_object = json.load(json_buffer) # Process JSON object if not json_object: # Reached the end of the file break
以上是如何在Python中解析包含多個JSON物件的JSON檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!