当json文件过大时,使用内置的json模块解析会报错,后发现ijson模块可以很好的解决这个问题:
使用过程中,还发现使用ijson,能较好的发现json文件是否有问题。例如,使用ijson读取一个json文件后,如果该json文件本身有问题,它会显示的报错错误:
Traceback (most recent call last):
File "E:/test/work/myspider/test/read_json.py", line 28, in <module>
main()
File "E:/test/work/myspider/test/read_json.py", line 21, in main
print(objects.__next__())
ijson.common.IncompleteJSONError: parse error: trailing garbage
1424310102120440291B120788"}}{"status_code":0,"min_cursor":1
(right here) ------^
通过报错可知,实际上是json文件本身有错误,该json文件本身包含多个字典对象,但是彼此之间未正确分隔,所以在读取时候会出错。如果只是用json或者ujson模块解析,则不会显示的报错。代码:
# -*- coding: utf-8 -*-
"""
@author:
@time:
@description:
"""
import ijson
def main():
path = r'C:\Users\admin\Desktop\dou.json'
with open(path, 'rt', encoding='utf8') as f:
objects = ijson.items(f, 'a')
while True:
try:
print(objects.__next__())
except StopIteration as e:
print("数据读取完成")
break
if __name__ == "__main__":
main()