如何在不加载文件的情况下验证JSON格式?我正在将文件从一个S3存储桶复制到另一个S3存储桶。 JSONL文件之后 复制后,我想检查大括号和逗号是否正确的文件格式。
我不想使用json.load(),因为文件大小和数量很大,并且会减慢处理过程,并且文件已经被复制,因此无需解析它,只需进行验证即可。
答案 0 :(得分:1)
Amazon S3本身没有功能来验证对象的内容。
只要在S3存储桶中创建文件,就可以配置S3来触发AWS Lambda函数。然后,如果验证失败,则Lambda函数可以解析文件并执行某些操作(例如,发送通知或将对象移动到另一个位置)。
答案 1 :(得分:0)
流式处理文件似乎是解决该问题的方法,将其放入生成器中并逐行生成以检查JSON是否有效。请求库支持流式传输文件。
解决方案如下:
import requests
def get_data():
r = requests.get('s3_file_url', stream=True)
yield from r.iter_lines():
def parse_data():
# initialize generator
gd_gen = get_data()
while True:
try:
ge_gen.__next__()
except StopIteration:
break
# put your validation code here
让我知道您需要更好的说明