2013-06-01 51 views

回答

119

您可以使用json.loads

import json 
import requests 

response = requests.get(...) 
json_data = json.loads(response.text) 

这是一个给定的字符串转换成一个字典,它允许你在代码中轻松地访问您的JSON数据。

+1

OK很大,但是每个元素的仍然是Unicode。 – felix001

+0

@ felix001:是的,尽管你可以使用'str()'来转换任何数据。另一方面,unicode数据并不坏(为将来做准备)。 –

+52

使用'response.json()'好得多,因为它可以更好地计算出使用的编码。 (免责声明,我写了一些代码)。 –

185

如果您使用的要求,你应该使用响应的json方法。它guesses which UTF encoding was used if no encoding was specifieduses the simplejson package if it is installed

import requests 

response = requests.get(...) 
data = response.json() 
+1

请记住,它已经出现在v0.12和v1.0之间的某个地方,例如,用于python-requests的Ubuntu 12.04 deb-package目前还没有这个功能(它是v0.8)。 虽然不是使用deb软件包,但您可以'pip安装请求'。 – timurb

+0

我有点好奇,现在“数据”是列表还是字典列表。 –

+2

@Krishna_Oza'data'镜像它读取的JSON的结构。例如,如果响应是:'[{“a”:{...}}],'data'是一个列表,其中list [0] == {'a':{...}} '。如果答案是“{”a“:”b“,”c“:”d“}',则data是一个字典。这是否回答你的问题? – pswaminathan

2

解析像

ParsedValue = data['one']['two']['three'] 
print ParsedValue 

好运低于

{ 
    one: { 
     two: { 
      three: "Hello, friend!", 
     } 
    } 
} 

像一个回应,我们可以做一些事情!

+0

这显示了如何遍历已解析的值,但没有显示如何将它从字符串解析为JSON,这就是问题的要求。 –

-1
**#  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']) 
+2

不鼓励使用仅限代码的答案。请编辑您的答案并解释您的解决方案。 –

+0

...也许,也许它与以前的答案有很大的不同 - 这似乎是令人鼓舞的[在当前接受的答案](https://stackoverflow.com/a/16877439/14122)中更加简洁地描述的实践, ,这实质上是比[目前得票最多的答案(https://stackoverflow.com/a/16877561/14122),它的'request'库的内容更感知内置JSON解码支持的优势更差。 –

相关问题