首页 > 解决方案 > 在 python 中解析一些 JSON 时遇到问题

问题描述

我正在尝试从https://mtgjson.com/json/AllCards.json解析一些 JSON 数据,但我不确定如何处理其结构方式。这是我的代码片段:

cards = json.loads(open("AllCards.json", encoding="utf8").read())
for card in cards:
    print(card)

我期待“card”是一个字典,然后我可以使用它来访问属性,例如“card['name']”。但是,在这种情况下,所有“卡片”都是包含键值的字符串,因此我不能使用它来访问任何嵌套属性。如果我打印“卡片”,它会输出整个 JSON 文档,包括所有嵌套属性。

我也尝试使用卡 [0] 访问它们,但这给了我一个关键错误。

我显然在这里遗漏了一些东西,但我不知道是什么。

标签: pythonjson

解决方案


默认情况下,迭代字典将迭代其键。

如果你也想要这些值,你应该迭代dict.items()

import json
cards = json.loads(open("AllCards.json", encoding="utf8").read())
for key, value in cards.items():
    print(key, value)

value将包含子字典。

这是一样的

import json
cards = json.loads(open("AllCards.json", encoding="utf8").read())
for key in cards:
    print(key, cards[key])

如果您不关心密钥,则可以直接迭代值:

import json
cards = json.loads(open("AllCards.json", encoding="utf8").read())
for card in cards.values():
    print(card)

推荐阅读