首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >API返回包装在函数中的JSON数据,破坏了json.loads

API返回包装在函数中的JSON数据,破坏了json.loads
EN

Stack Overflow用户
提问于 2019-12-11 12:41:59
回答 1查看 64关注 0票数 0

我正在尝试使用从USGS Earthquake API中提取的JSON数据。如果您点击这个链接,就可以看到原始的JSON数据。

JSON看起来很棒;但是,返回的请求被包装在一个eqfeed_callback();中,这破坏了Python中的JSON反序列化。

快速浏览一下我到目前为止的代码:

代码语言:javascript
运行
复制
import requests
import json
from pprint import pprint

URL = "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp"

response = requests.get(URL)

raw_json = str(response.content)
json = json.loads(raw_json)

print(json)

我得到了错误:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "run.py", line 11, in <module>
    json = json.loads(raw_json)
  File "C:\Program Files\Anaconda3\lib\json\__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "C:\Program Files\Anaconda3\lib\json\decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Program Files\Anaconda3\lib\json\decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

虽然我很肯定,但问题是它被包装在该函数中,而JSON解码器不喜欢它。那么,我该如何删除函数包装器才能留下干净的JSON呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-11 13:06:09

您使用了错误的URL。

封装在函数调用中的JSON是JSONP,当从web浏览器调用API时,需要它来绕过CORS。

获取普通JSON的URL为

代码语言:javascript
运行
复制
URL = "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojson"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59279005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档