【问题标题】:Getting error JSONDecodeError: Expecting ',' delimiter when importing from API从 API 导入时出现错误 JSONDecodeError: Expecting ',' delimiter
【发布时间】:2021-01-20 00:12:19
【问题描述】:

我正在尝试解析来自 API 的响应数据,但我不断收到此错误。

这是我的代码:

import requests
import json

url = "https://ratings.food.gov.uk/OpenDataFiles/FHRS776en-GB.json"

r = requests.get(url)
json_data = r.json()

这是错误

File "/usr/local/lib/python3.8/site-packages/requests/models.py", line 889, in json
   return complexjson.loads(
 File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/__init__.py", line 357, in loads
   return _default_decoder.decode(s)
 File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/decoder.py", line 337, in decode
   obj, end = self.raw_decode(s, idx=_w(s, 0).end())
 File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/decoder.py", line 353, in raw_decode
   obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 233384 (char 233383)

我已经确认这是一个有效的 JSON,而且这是一个公共 API,所以我无法控制格式。我怎样才能克服这个错误?

【问题讨论】:

  • 从 url 返回的 json 中有一个错误 - 甚至 Firefox 也无法显示 url 并在对象中的属性值之后出现 SyntaxError: JSON.parse: expected ',' or '}'在 JSON 数据的第 1 行第 233384 列
  • 根据 jsonlint.com,JSON 中有 is 错误

标签: java python json api


【解决方案1】:

问题不是你的代码,而是 json。

您可以验证 json here。第 7669 行和第 7670 行各缺少一个 ,

【讨论】:

    【解决方案2】:

    你可以使用

    import requests
    import json
    
    url = "https://ratings.food.gov.uk/OpenDataFiles/FHRS776en-GB.json"
    
    r = requests.get(url)
    json_data = json.loads(r.text)
    

    【讨论】:

    • 是的,我刚刚意识到它不是真正的 json。这是 API 的问题,而不是代码的问题。如果你在 Firefox 中访问 api,它会告诉你同样的事情。
    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多