- 此问题在此处已有答案**:
What is JSONP, and why was it created?(10个答案)
Django - Parse JSONP (Json with Padding)(2个答案)
昨天关门了。
我正在使用一个联盟网络(Sovrn)的API,期望使用URL检索产品的规格。
根据他们的文档,我使用:
url = 'URL-goes-here'
headers = {
"accept": "application/json",
"authorization": "VERY-HARD-TO-GUESS"
}
response = requests.get(url, headers=headers)
代码正常工作,我得到的响应是200
,标头包含神奇的content-type application/json
行
当我这样做
print(response.text)
我得到
NULL({"merchantName":"Overstock","canonicalUrl":"URL goes here","title":"product name",...});
我测试了响应类型response.text
,结果是<class 'str'>
,但当我尝试将响应作为json处理时:
product_details = json.load(response.text)
我收到一条错误消息:
requests.exceptions.JSONDecodeError: [Errno Expecting value]
我是JSON新手,但我认为错误是由于 Package (看似有效的)数据的外部NULL造成的。
在花了几个小时寻找解决方案之后,似乎我一定错过了一些明显的东西,但不确定是什么。
任何指示都将是非常有帮助的。
2条答案
按热度按时间ahy6op9u1#
这显然是API中的一个bug。假设在你抱怨之后它会被修复,你可以在代码中添加一个hack
yhxst69z2#
通过使用字符串切片,可以忽略开头的
NULL(
和结尾的);
:此外,应该使用
json.loads()
,因为内容是字符串。