遍历 python 中的 json 数组

Traversing json array in python

我正在使用 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))

我正在尝试检索 "original" 的值,但我很难到达那里。 我可以做 print(json_object['query']['pages'] 但是一旦我做 print(json_object['query']['pages'][0] 我 运行 进入 KeyError: 0.

我怎样才能使用 python 检索 original 的值?

改为这样做:

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 是必需的信息。

[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']

您可以遍历键:

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