我正在尝试使用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"]
我可以获得第一个显示的网址,但我不确定如何迭代所有项目并显示网址。有什么建议吗?
此外,这是我正在尝试解析的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
答案 0 :(得分:1)
当您在JSON结果的[0]
上["children"]
时,您只选择了一个帖子。
因此,要获取所有帖子,请不要使用[0]
:
reddit_posts = json.loads(f.read().decode("utf-8"))["data"]["children"]
现在你可以迭代所有这些:
for post in reddit_posts:
print post["data"]["media"]["oembed"]["url"]