json.decoder.JSONDecodeError:额外数据:第 2 行第 1 列(字符 190)[重复]

Posted

技术标签:

【中文标题】json.decoder.JSONDecodeError:额外数据:第 2 行第 1 列(字符 190)[重复]【英文标题】:json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 190) [duplicate] 【发布时间】:2018-06-16 20:59:44 【问题描述】:

我正在运行以下代码-

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

【问题讨论】:

您的 json 文件有问题。它可能格式不正确。 【参考方案1】:

您的 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
    ]

将再次被接受。但是不能有多个***对象。

【讨论】:

就我而言,它变成了该文件中的 20000 条记录。答案中建议的链接为我提供了解决方案。【参考方案2】:

我正在从 REST API 调用解析 JSON 并收到此错误。事实证明,API 变得“更麻烦”(例如关于参数的顺序等),因此返回格式错误的结果。检查你是否得到了你所期望的:)

【讨论】:

【参考方案3】:

如果您的字符串中有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)

【讨论】:

这是因为False 是not a valid boolean, according to JSON schema。您正在寻找的正确布尔值是false,而不是"False"(它是一个字符串)。所以,在你的情况下,你应该使用string.replace("False", "false")

以上是关于json.decoder.JSONDecodeError:额外数据:第 2 行第 1 列(字符 190)[重复]的主要内容,如果未能解决你的问题,请参考以下文章