ホームページ >バックエンド開発 >Python チュートリアル >Python で複数の JSON オブジェクトを含む JSON ファイルを解析する方法
複数の JSON オブジェクトを含む JSON ファイルのロードと解析
単一のオブジェクトまたは配列内にすべてのデータをカプセル化する標準の JSON ファイルとは異なり、特定の JSON 形式では、個々のオブジェクトがテキスト ファイル内の別の行として保存されます。これにより、このようなファイルを Python で解析しようとするときに問題が発生する可能性があります。
ValueError への対処
Python の json.load() 関数を使用して JSON ファイルをロードする場合複数のオブジェクトを使用すると、「ValueError: Extra data」例外が発生する可能性があります。このエラーは、最初に解析されたオブジェクトの後にファイルに予期しないデータが含まれていることを示します。
解決策: 行ごとの解析
この問題を処理するには、次のことを行う必要があります。ファイル内の各行は独立した JSON オブジェクトとして扱われます。現在のコードを次のコードに置き換えます。
import json data = [] with open('file') as f: for line in f: data.append(json.loads(line))
このコードは、ファイル内の各行を反復処理し、JSON オブジェクトとして解析し、リストに追加します。
大きなファイルに関する考慮事項
JSON ファイルが特に大きい場合、すべてのオブジェクトを 1 つのリストに追加すると消費される可能性があります過剰なメモリ。これを軽減するには、次の行に進む前に各オブジェクトを個別に処理します。回避:
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 中国語 Web サイトの他の関連記事を参照してください。