【发布时间】:2013-05-28 11:07:40
【问题描述】:
我正在使用 python requests module 将 RESTful GET 发送到服务器,为此我得到 JSON 响应。 JSON 响应基本上只是一个列表。
强制响应本机 Python 对象的最佳方法是什么,以便我可以使用 pprint 进行迭代或打印出来?
【问题讨论】:
标签: python json rest python-requests
我正在使用 python requests module 将 RESTful GET 发送到服务器,为此我得到 JSON 响应。 JSON 响应基本上只是一个列表。
强制响应本机 Python 对象的最佳方法是什么,以便我可以使用 pprint 进行迭代或打印出来?
【问题讨论】:
标签: python json rest python-requests
由于您使用的是requests,因此您应该使用响应的json 方法。
import requests
response = requests.get(...)
data = response.json()
【讨论】:
pip install requests 而不是使用 deb 包。
data是列表还是字典。
data 反映了它正在读取的 JSON 的结构。例如,如果响应是:[{"a": {...}}],data 是一个列表,带有list[0] == {'a': {...}}。如果响应是{"a": "b", "c": "d"},则data 是一个字典。这能回答你的问题吗?
>>> import requests >>> r = requests.get('http://httpbin.org/get') >>> r.json <bound method Response.json of <Response [200]>> >>> r.json() {'args': {}, ...}
你可以使用json.loads:
import json
import requests
response = requests.get(...)
json_data = json.loads(response.text)
这会将给定的字符串转换为字典,让您可以在代码中轻松访问 JSON 数据。
或者您可以使用@Martijn 的有用建议,以及投票率较高的答案response.json()。
【讨论】:
str() 转换任何数据。另一方面,拥有 unicode 数据也不错(为未来做准备)。
response.json() 好多了,因为它会更好地 搞清楚所使用的编码。 (免责声明,我写了一些代码)。
response.text()?
json module。 requests.compat 模块用于桥接不同的 Python 版本,requests.compat.json 与 json 几乎在您关心的每个系统上都是一样的。
您可以直接将json响应用作字典:
import requests
res = requests.get('https://reqres.in/api/users?page=2')
print(f'Total users: {res.json().get("total")}')
或者您可以将 json 内容保存为字典:
json_res = res.json()
从这个 json_res 字典变量中,您可以提取您选择的任何值
json_res.get('total')
json_res["total"]
注意事项因为这是一本字典,所以您应该留意关键的拼写和大小写,即“总计”与“总计”不同
【讨论】: