2012-07-24 40 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