【发布时间】:2014-06-14 05:27:23
【问题描述】:
我尝试通过 Python 程序运行大约 2000 个 JSON 文件。当 JSON 文件的格式不正确时会出现问题。 (错误:ValueError: No JSON object could be decoded)反过来,我无法将其读入我的程序。
我目前正在做类似以下的事情:
for files in folder:
with open(files) as f:
data = json.load(f); # It causes an error at this part
我知道有离线方法可以验证和格式化 JSON 文件,但有没有一种编程方式来检查和格式化这些文件?如果没有,是否有免费/便宜的替代方法来离线修复所有这些文件,即我只是在包含所有 JSON 文件的文件夹上运行程序并根据需要对其进行格式化?
使用@reece 的评论解决:
invalid_json_files = []
read_json_files = []
def parse():
for files in os.listdir(os.getcwd()):
with open(files) as json_file:
try:
simplejson.load(json_file)
read_json_files.append(files)
except ValueError, e:
print ("JSON object issue: %s") % e
invalid_json_files.append(files)
print invalid_json_files, len(read_json_files)
原来我在我的工作目录中保存了一个不是 JSON 格式的文件,这与我从中读取数据的位置相同。感谢您提供有用的建议。
【问题讨论】:
-
如果您不知道错误的确切位置,您打算如何修复这些文件?
-
什么格式不好?您意识到您覆盖了每个文件的数据对象,是吗?
-
@frostnational 我的印象是一个程序会检查 JSON 文件中可能出现的一些问题,如果它们发生,它会自动修复这些问题。例如。
{text : "foo"} text2 : "bar"-> 没有逗号分隔两个字典。 @Llopis:是的,我希望程序能够处理每个 JSON 文件。也许格式正确可能会在字典之间缺少一列。