使用 Python 的 json.loads 时出现错误:“ValueError: Extra data”
使用 Python 的 json.loads 函数解析 JSON 文件时,您可能会遇到错误:
ValueError: Extra data: line 88 column 2 - line 50607 column 2 (char 3077 - 1868399)
此错误表明存在额外数据不属于有效 JSON 结构的 JSON 文件。
原因
当 JSON 文件每行包含多个 JSON 对象时,通常会发生此错误。 json.loads 期望单个 JSON 对象作为输入,但如果第一个对象后面有其他内容,则会引发“额外数据”错误。
示例 JSON
例如,考虑以下示例 JSON 文件:
{"id": 123, "name": "John"} { "id": 456, "name": "Jane" }
此文件包含两个 JSON 对象,但每个对象并不位于单独的 线。当 json.loads 遇到第一个对象时,它会尝试解析它,并在到达第二个对象时引发错误。
解决方案
此错误的解决方案是为了确保每个 JSON 对象在文件中独占一行。这可以通过手动编辑文件或使用工具重新格式化 JSON 来完成。
迭代解析
如果 JSON 文件很大并且包含许多 JSON 对象,您还可以使用迭代方法来解析文件,而无需将整个文件加载到内存中。
import json tweets = [] with open('tweets.json', 'r') as file: for line in file: tweets.append(json.loads(line))
在这种方法中,该文件逐行迭代,每一行都被解析为一个 JSON 对象。这避免了存储中间的 Python 对象,并且对于大文件更有效。
以上是为什么我在使用 Python 的 json.loads 时收到“ValueError: Extra Data”?的详细内容。更多信息请关注PHP中文网其他相关文章!