一般而言,将多个JSON对象放入一个文件会使该文件 无效,JSON损坏
。也就是说,您仍然可以使用
JSONDeprer.raw_depre()method来解析数据。
当解析器找到它们时,以下将产生完整的对象:
from json import JSonDeprerfrom functools import partialdef json_parse(fileobj, deprer=JSonDeprer(), buffersize=2048): buffer = '' for chunk in iter(partial(fileobj.read, buffersize), ''): buffer += chunk while buffer: try: result, index = deprer.raw_depre(buffer) yield result buffer = buffer[index:].lstrip() except ValueError: # Not enough data to depre, read more break
该函数将从块中的给定文件对象中读取块
buffersize,并使
deprer对象从缓冲区解析整个JSON对象。每个解析的对象都交给调用者。
像这样使用它:
with open('yourfilename', 'r') as infh: for data in json_parse(infh): # process object仅当您的JSON对象背对背写入文件且中间没有换行符时,才使用此选项。如果您 确实 有换行符,并且每个JSON对象都限于一行,那么您将拥有一个JSON
Lines文档



