2012-07-24 27 views
0

我回顾了一些与我的相关问题,发现它有点独特。我在OS X 10.7上使用Python 2.7.1。还有一点需要注意:我比开发人员更像是黑客。Python无法解析JSON API返回漂亮

我钩住语法下面从Python documentation尝试做一个“漂亮打印”

date = {} 
data = urllib2.urlopen(url) 
s = json.dumps(data.read(), sort_keys=True, indent=4) 
print '\n'.join([l.rstrip() for l in s.splitlines()]) 

我的预期使用rstrip/splitlines命令将扩大出像本例中的电话。

而且,不知道这是否是相关的,但特林管道输出到python -mjson.tool时的回复是No JSON object could be decoded

这里的卷曲输出的一个片段,我试图解析:

{"data":[{"name":"Site Member","created_at":"2012-07-24T11:22:04-07:00","activity_id":"500ee7cbbaf02xxx8e011e2e", 

等等。

主要目标是使这些数据更加清晰易读,以便我可以从中学习,并根据参数构建一些自动抓取数据。任何指导让我从绿色到成功都是巨大的帮助。

谢谢,
MJB

+0

你应该张贴例如输出,并说明有什么错,你得到的输出。 – 2012-07-24 19:26:39

+1

你应该不需要'.rstrip()'。 'rstrip'删除末尾的空格,'json.dumps'不会引入。只是'json.dumps(d,sort_keys = True,indent = 4)'有什么问题? – Julian 2012-07-24 19:28:24

+0

不是很自动化,但你[http://jsonlint.com/](http://jsonlint.com/)会为你打印json。 – CraigTeegarden 2012-07-24 19:28:48

回答

2

的urllib2.urlopen()的输出。读()是一个字符串,需要被转换为第一对象可以调用它json.dumps()之前。

修改后的代码:

date = {} 
data = urllib2.urlopen(url) 
data_obj = json.loads(data.read()) 
s = json.dumps(data_obj, sort_keys=True, indent=4) 
print s 
+0

就是这样!非常感谢。我很感激具体的解释,所以我可以开始分解这里的具体问题。我是一个通过试用和开发的开发人员。 – mbb 2012-07-25 14:08:37