単一ファイルから複数の JSON オブジェクトを繰り返し抽出する
複数の JSON オブジェクトを含む JSON ファイルを扱う場合、効率的な方法を見つけることが重要です各オブジェクトから特定のデータ要素を抽出します。
1 つの方法は、Python の json.JSONDecoder.raw_decode 関数を利用することです。この関数を使用すると、ルート配列でラップされていない場合でも、複数のオブジェクトを含む大きな JSON 文字列をデコードできます。
まず、JSON ドキュメントから先頭の空白を削除する必要があります。その後、ループ内で raw_decode を使用してオブジェクトを 1 つずつ抽出できます。この関数は、解析されたオブジェクトが終了した最後の位置とオブジェクト自体を返します。
このアプローチを示すコード スニペットは次のとおりです。
<code class="python">from json import JSONDecoder, JSONDecodeError import re NOT_WHITESPACE = re.compile(r'\S') def decode_stacked(document, pos=0, decoder=JSONDecoder()): while True: match = NOT_WHITESPACE.search(document, pos) if not match: return pos = match.start() try: obj, pos = decoder.raw_decode(document, pos) except JSONDecodeError: # handle error raise yield obj</code>
このメソッドを使用すると、JSON 文字列をデコードできます。複数のオブジェクトを使用して、特定の要素をデータ フレームに抽出します。たとえば、JSON ファイルに次の構造が含まれている場合:
<code class="json">{"ID":"12345","Timestamp":"20140101", "Usefulness":"Yes", "Code":[{"event1":"A","result":"1"},…]} {"ID":"1A35B","Timestamp":"20140102", "Usefulness":"No", "Code":[{"event1":"B","result":"1"},…]} {"ID":"AA356","Timestamp":"20140103", "Usefulness":"No", "Code":[{"event1":"B","result":"0"},…]} …</code>
コードでは次のループを使用して、「タイムスタンプ」と「有用性」の値を抽出できます。
<code class="python">import pandas as pd data = [] for obj in decode_stacked(json_string): data.append([obj["Timestamp"], obj["Usefulness"]]) df = pd.DataFrame(data, columns=["Timestamp", "Usefulness"])</code>
これこのメソッドは、単一のファイルから複数の JSON オブジェクトを抽出する柔軟かつ効率的な方法を提供し、複雑な JSON 構造から表形式にデータを収集できます。
以上がPython の「json.JSONDecoder.raw_decode」を使用して単一のファイルから複数の JSON オブジェクトを効率的に抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。