我正在运行以下代码 -
import json
addrsfile =
open("C:\\Users\file.json",
"r")
addrJson = json.loads(addrsfile.read())
addrsfile.close()
if addrJson:
print("yes")
但是给了我以下错误 -
Traceback (most recent call last):
File "C:/Users/Mayur/Documents/WebPython/Python_WebServices/test.py", line 9, in <module>
addrJson = json.loads(addrsfile.read())
File "C:\Users\Mayur\Anaconda3\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Users\Mayur\Anaconda3\lib\json\decoder.py", line 342, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 190)
有人帮我吗?
JSON文件就像 -
{"name": "XYZ", "address": "54.7168,94.0215", "country_of_residence": "PQR", "countries": "LMN;PQRST", "date": "28-AUG-2008", "type": null}
{"name": "OLMS", "address": null, "country_of_residence": null, "countries": "Not identified;No", "date": "23-FEB-2017", "type": null}
答案 0 :(得分:9)
您的json文件中有两条记录,json.loads()
无法解码多条记录。你需要按记录进行记录。
请参阅Python json.loads shows ValueError: Extra data
或者你需要重新格式化你的json以包含一个数组:
{
"foo" : [
{"name": "XYZ", "address": "54.7168,94.0215", "country_of_residence": "PQR", "countries": "LMN;PQRST", "date": "28-AUG-2008", "type": null},
{"name": "OLMS", "address": null, "country_of_residence": null, "countries": "Not identified;No", "date": "23-FEB-2017", "type": null}
]
}
再次被接受。但是不可能有几个顶级对象。
答案 1 :(得分:0)
我正在从REST API调用中解析JSON,并收到此错误。事实证明,API已变得“麻烦”(例如,关于参数的顺序等),因此返回格式错误的结果。检查您得到的是您期望的:)
答案 2 :(得分:0)
如果您的字符串中有json.loads()
无法识别的部分,也会出现此错误。在此示例字符串中,字符27 (char 27)
处将引发错误。
string = """[{"Item1": "One", "Item2": False}, {"Item3": "Three"}]"""
对此,我的解决方案是使用string.replace()
将这些项目转换为字符串:
import json
string = """[{"Item1": "One", "Item2": False}, {"Item3": "Three"}]"""
string = string.replace("False", '"False"')
dict_list = json.loads(string)