ablog

不器用で落着きのない技術者のメモ

Kinesis Firehose S3 に出力した JSON を Python でパースする

from json.decoder import WHITESPACE, JSONDecoder
from typing import Generator


def load_iter(text: str) -> Generator:
    size = len(text)
    decoder = JSONDecoder()
    index = 0
    while index < size:
        obj, offset = decoder.raw_decode(text, index)
        yield obj
        search = WHITESPACE.search(text, offset)
        if search is None:
            break
        index = search.end()
        
        
if __name__ == '__main__':
    text = open('path').read()
    for obj in load_iter(text):
        print('===')
        print(obj)

load_iterという関数でデータのパースを行っています。
PythonのGeneratorを使用しているので、そのままループで処理させることができます。

[Tips] Firehoseで吐いたJSONが繋がったファイルをPythonでパースしてみる | Developers.IO