我使用python requests
module向服务器发送RESTful GET,为此我在JSON中获得响应。 JSON响应基本上只是一个列表清单。从请求库中解析JSON响应的最佳方式是什么?
什么是强迫到原来的Python对象的反应,所以我可以重复或使用pprint
打印出来的最好方法是什么?
我使用python requests
module向服务器发送RESTful GET,为此我在JSON中获得响应。 JSON响应基本上只是一个列表清单。从请求库中解析JSON响应的最佳方式是什么?
什么是强迫到原来的Python对象的反应,所以我可以重复或使用pprint
打印出来的最好方法是什么?
您可以使用json.loads
:
import json
import requests
response = requests.get(...)
json_data = json.loads(response.text)
这是一个给定的字符串转换成一个字典,它允许你在代码中轻松地访问您的JSON数据。
如果您使用的要求,你应该使用响应的json
方法。它guesses which UTF encoding was used if no encoding was specified和uses the simplejson package if it is installed。
import requests
response = requests.get(...)
data = response.json()
请记住,它已经出现在v0.12和v1.0之间的某个地方,例如,用于python-requests的Ubuntu 12.04 deb-package目前还没有这个功能(它是v0.8)。 虽然不是使用deb软件包,但您可以'pip安装请求'。 – timurb
我有点好奇,现在“数据”是列表还是字典列表。 –
@Krishna_Oza'data'镜像它读取的JSON的结构。例如,如果响应是:'[{“a”:{...}}],'data'是一个列表,其中list [0] == {'a':{...}} '。如果答案是“{”a“:”b“,”c“:”d“}',则data是一个字典。这是否回答你的问题? – pswaminathan
解析像
ParsedValue = data['one']['two']['three']
print ParsedValue
好运低于
{
one: {
two: {
three: "Hello, friend!",
}
}
}
像一个回应,我们可以做一些事情!
这显示了如何遍历已解析的值,但没有显示如何将它从字符串解析为JSON,这就是问题的要求。 –
**# This code helping to get data or individual fields from url like api url**
#Get for single field from url
import requests
import json
import urllib
url="http://api.open-notify.org/iss-pass.json"
r=requests.get(url)
t=json.loads(r.content)
for i in range(len(t)):
#There is state is field of database
print(t[i]['state'])
不鼓励使用仅限代码的答案。请编辑您的答案并解释您的解决方案。 –
...也许,也许它与以前的答案有很大的不同 - 这似乎是令人鼓舞的[在当前接受的答案](https://stackoverflow.com/a/16877439/14122)中更加简洁地描述的实践, ,这实质上是比[目前得票最多的答案(https://stackoverflow.com/a/16877561/14122),它的'request'库的内容更感知内置JSON解码支持的优势更差。 –
OK很大,但是每个元素的仍然是Unicode。 – felix001
@ felix001:是的,尽管你可以使用'str()'来转换任何数据。另一方面,unicode数据并不坏(为将来做准备)。 –
使用'response.json()'好得多,因为它可以更好地计算出使用的编码。 (免责声明,我写了一些代码)。 –