如何检查JSON文件是否只包含空数组

问题描述 投票:1回答:1

我需要检查我的JSON文件是包含数据还是仅包含空数组。我是这样做的:

with open('example.json') as f:
    data = json.load(f)
    if not data:
        do_my_stuff()

但我的JSON文件可能非常庞大,我不想全部加载它们。 我可以通过其他方式检查文件是否只包含空数组吗?检查我的文件的重量是否是2个字节(不是很蹩脚吗?)?

python json python-3.x
1个回答
0
投票

您必须使用os.path.getsize(path)来查找文件的文件大小。 您根本不必阅读文件。 如果JSON文件只是2个字节,“[]”或“{}”,则它是一个空的JSON对象。

基于一些JSON使用原则,在这种特殊情况下,假设2字节长的JSON字符串是空字符串,数组或对象(“”,[],{})是明智和安全的。两位数字可能是有效的JSON字符串,但它不是JSON的用途(您可以使用JSON库加载单个值,就像您可以使用大型起重机来提升蛋)。

如果此[文件大小]不符合您的要求,您必须读取前2个字节并检查它们是否等于'[]':

with open(filename, 'rb') as file:
    if file.read(2) != '[]':
        file.seek(0)  # it may be redundant but it does not hurt
        json.load(file)
© www.soinside.com 2019 - 2024. All rights reserved.