2012-10-14 148 views
-1

我想解析一些使用python的json數據,並且在遍歷不同的項目時遇到了問題。它看起來像所有的數據都在列表中,並且整個列表中的每個項目都有不同的字典。這是我到目前爲止有:如何用python解析json?

try: 
     f = urllib.urlopen("http://www.reddit.com/r/videos/top/.json"); 
    except Exception: 
     print("ERROR: malformed JSON response from reddit.com") 
    reddit_posts = json.loads(f.read().decode("utf-8"))["data"]["children"][0] 
    print reddit_posts["data"]["media"]["oembed"]["url"] 

我能得到第一網址顯示,但我不知道如何遍歷所有項目,並顯示的URL。有什麼建議?

而且,這裏是JSON我試圖解析更好格式化的觀點:http://jsonviewer.stack.hu/#http://www.reddit.com/r/videos/top/.json

編輯: 我試圖for循環,但我有實現它的麻煩。

for entry in reddit_posts: 
    print entry[0] #only prints the first character of entry ('k' and 'd') 
    print entry["data"] #get an error: string indices must be integers 
+2

使用'for'循環:HTTP:/ /docs.python.org/tutorial/controlflow.html#for-statements – Blender

+0

@Blender我試着把一個for循環放入(它在編輯中),但是這樣做很麻煩 – sharataka

回答

1

您選擇,當你在JSON結果的["children"][0]只有一個職位。

因此,爲了獲得所有職位,離開關[0]

reddit_posts = json.loads(f.read().decode("utf-8"))["data"]["children"] 

現在你可以遍歷所有的人:

for post in reddit_posts: 
    print post["data"]["media"]["oembed"]["url"] 
+1

當我嘗試獲取TypeError時:'NoneType '對象不是可訂購的 – sharataka

+0

我能夠在命令行中看到url,但瀏覽器顯示上面提到的錯誤。 – sharataka