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('{}{}')

Python 中 json.decoder.JSONDecodeError: Extra data

我们正在尝试解析 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 返回的数据并在后端更正问题。