Python 中 json.decoder.JSONDecodeError: Extra data
Python “json.decoder.JSONDecodeError: Extra data”发生在我们尝试解析多个对象而不将它们包装在数组中时。 要解决该错误,请将 JSON 对象包装在一个数组中或声明一个指向包含这些对象的数组值的新属性。
这是一个非常简单的示例,说明错误是如何发生的。
import json
# ⛔️ json.decoder.JSONDecodeError: Extra data: line 1 column 3 (char 2)
result = json.loads('{}{}')
我们正在尝试解析 2 个并排的对象,而这些对象不是数组中的元素。
这是读取文件时如何发生错误的示例。
import json
file_name = 'example.json'
with open(file_name, 'r', encoding='utf-8') as f:
# ⛔️ json.decoder.JSONDecodeError: Extra data: line 2 column 3 (char 42)
my_data = json.load(f)
print(my_data) # ?️ {'name': 'Alice', 'age': 30}
下面是 example.json 文件的内容。
现在我们可以读取文件而不会出错。
import json
file_name = 'example.json'
with open(file_name, 'r', encoding='utf-8') as f:
my_data = json.load(f)
# ?️ [{'id': 1, 'name': 'Alice', 'age': 30}, {'id': 2, 'name': 'Bob', 'age': 35}, {'id': 3, 'name': 'Carl', 'age': 40}]
print(my_data)
或者,我们可以在 json 对象中添加一个新属性。
验证和更正 JSON 的最快方法是使用 JSON 验证器。
如果我们从远程 API 获取数据,则必须查看 API 返回的数据并在后端更正问题。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。