为什么这么简单的JSON对象会引发错误?

时间:2018-12-19 15:25:11

标签: python json

我有以下JSON文件:

{
"test": "test",
}

我正在尝试使用JSON Python库加载它:

import json
with open(file.json, "r") as file:
    data = json.load(file)

但是,它会引发以下错误:

ValueError: Expecting property name: line 3 column 1 (char 18)

我做错了什么?

编辑:

我设法通过以下方式解决了这个问题:

filtered_json = f.read().decode('utf-8-sig')
out_json = json.loads(filtered_json)

1 个答案:

答案 0 :(得分:0)

这是检查您的字符串是否可以加载到python JSON对象中的快速方法:打开任何在线JSON验证器(例如https://jsonlint.com/)并键入您的字符串,然后尝试对其进行验证。如果在线工具将您的字符串报告为无效的JSON,则在该字符串上调用的json.loads()函数很可能也会失败并引发异常。

在上述站点中输入的示例字符串被报告为无效的JSON。该网站还暗示了问题的根源:验证器希望字符串后跟逗号,但取而代之的是获取JSON终止符。

现在,如果通过删除有问题的逗号来修复示例JSON,您将注意到您仍然会收到错误消息,因为您的 with open 语句调用的值不存在或可能不存在定义。最可能是因为您要打开一个名为“ file.json” 的文件,而不是变量 file.json 的内容。

在这里,您可以修复代码以将“ file.json”的内容实际读入数据变量:

import json
with open("file.json") as file:
    data = json.load(file)
print(data)

请注意,文件名是以字符串形式给出的。