遍历python中的json数组

时间:2016-10-06 14:01:16

标签: python json django urllib

我正在使用urllib.request.urlopen来获取如下所示的JSON响应:

{
"batchcomplete": "",
"query": {
    "pages": {
        "76972": {
            "pageid": 76972,
            "ns": 0,
            "title": "Title",
            "thumbnail": {
                "original": "https://linktofile.com"
            }
        }
    }
}

获得回复的相关代码:

response = urllib.request.urlopen("https://example.com?title="+object.title)
data = response.read()
encoding = response.info().get_content_charset('utf-8')
json_object = json.loads(data.decode(encoding))

我试图检索"原始"的值,但我很难到达那里。 我可以做print(json_object['query']['pages']但是一旦我做print(json_object['query']['pages'][0]我遇到了一个KeyError:0。

如何通过python检索original的值?

3 个答案:

答案 0 :(得分:2)

请改为:

my_content = json_object['query']['pages']['76972']['thumbnail']['original']

原因是,只有当您将列表作为对象时,才需要将index称为[0]。但在您的情况下,每个项目都是dict类型。您需要指定key而不是index

如果数字是动态的,您可以这样做:

page_content = json_object['query']['pages']
for content in page_content.values():
    my_content = content['thumbnail']['original']

其中my_content是必填信息。

答案 1 :(得分:0)

正在寻找那个不存在的密钥[0]。假设您并不总是知道页面的键是什么,请试试这个:

pages = json_object['query']['pages']
for key, value in pages.items():  #  this is python3
    original = value['thumbnail']['original']

如果你知道(似乎是)pageid

,你可以简单地用钥匙抓住它。
json_object['query']['pages']['76972']['thumbnail']['original']

答案 2 :(得分:0)

您可以迭代键:

for page_no in json_object['query']['pages']:
    page_data = json_object['query']['pages'][page_no]