【问题标题】:how to open json file in python如何在python中打开json文件
【发布时间】:2020-05-05 08:30:19
【问题描述】:

我又被困在这里了...我有一个名为“data.json”的文件,我想用 python 打开它,但出现错误。

import json
>>> data=json.load(open("data.json"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Angel\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 293, in load
    return loads(fp.read(),
  File "C:\Users\Angel\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Angel\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py", line 340,
in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 4912995)
>>>

【问题讨论】:

  • 您的 json 文件中是否有 2 条或多于 2 条记录?
  • 如果您可以提供有帮助的 JSON 文件,您的 JSON 文件可能格式错误或存在编码问题。或者在线查找 JSON 格式化程序,复制它,它会告诉你它是否有效。另外,我建议在 open 调用中指定模式,即 open("data.json", "r")
  • @MarcSances 我确实在公开呼叫中指定了模式,但仍然有错误。我不了解杰克,因为我还在学习中
  • @Muzzamil 我真的不知道
  • 请提供您的 JSON 文件,以便我们查看它是否有效。

标签: python json python-3.x


【解决方案1】:

如果2 或超过2 record,您必须reformat 您的文件,如下所述,或者您必须逐条加载文件。

你需要reformat你的json包含一个array,如下所示:

{
    "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}
    ]
}

【讨论】:

  • json 模块是 python 安装附带的标准模块。 data.json 文件已下载,我想用 python 打开它
  • 是的。您可以将 json 数据/文件重新格式化为数组并尝试加载吗?
  • 谢谢大家....我能够成功加载文件。我是怎么做到的,data.json 文件包含一些 url 和其他与我删除并能够打开它无关的代码
  • 感谢您的支持,请您推荐一个好的教程来学习这一切吗?
  • 完美。你可以从这里学习基础知识learnpython.org
【解决方案2】:

根据Python JSON documentation

如果要反序列化的数据不是有效的 JSON 文档,则会引发 JSONDecodeError。

不知道你文件的内容,很难说哪里出了问题,但我怀疑你文件中的文本不是有效的 JSON 对象,或者更有可能(根据“额外数据”搜索,回答 @ 987654322@) 文件“data.json”包含多个 JSON 对象。

例如,使用您的代码: 该文件正常工作

{ "name":"John", "age":30, "car":null }

但是这个

{ "name":"John", "age":30, "car":null }
{ "name":"John", "age":30, "car":null }

抛出同样的错误

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\a\AppData\Local\Programs\Python\Python37-32\lib\json\__init__.py", 
line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Users\a\AppData\Local\Programs\Python\Python37-32\lib\json\__init__.py", 
line 348, in loads
return _default_decoder.decode(s)
File "C:\Users\a\AppData\Local\Programs\Python\Python37-32\lib\json\decoder.py", 
line 340, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 6 column 1 (char 55)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2020-12-09
    • 2020-10-09
    • 2017-12-30
    • 2011-03-15
    相关资源
    最近更新 更多