我从网址获取API,例如: http://api.example.com/search/foo/bar
使用这个简单的代码。
import json
url = "http://api.example.com/search/foo/bar"
result = json.loads(url) # result is now a dict
print result['name']
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误。
Traceback (most recent call last):
File "index.py", line 6, in <module>
result = json.loads(url);
File "/usr/lib64/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib64/python2.7/json/decoder.py", line 365, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python2.7/json/decoder.py", line 383, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
Run Code Online (Sandbox Code Playgroud)
您需要先从网址中读取数据。
json.loads()从字符串加载json。但是该字符串本质上只是字符串形式的json结构。您需要通过从该url请求中读取数据来获取json字符串,该数据应该是json字符串。
例如,如下所示:
import json
import urllib2
url = "http://api.example.com/search/foo/bar"
response = urllib2.urlopen(url)
json_string = response.read()
Run Code Online (Sandbox Code Playgroud)
json_string 现在假设api调用正确返回了您要查找的json。
json_dict = json.loads(json_string)
Run Code Online (Sandbox Code Playgroud)
您应该能够使用json_dict['name']etc 访问json中的项目。
json.loads()从字符串加载json,这是上面完成的操作(以及为什么我以前read()要获取字符串)。json.load()从json对象加载。如果api返回注释中提到的纯json格式,则可以尝试以下方法:
response = urllib2.urlopen(url)
json_dict = json.load(response)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1110 次 |
| 最近记录: |