遍历JSON时,如果有多个键值(一些键值相同),可以使用以下代码示例解决:
import json
def traverse_json(data, key):
if isinstance(data, dict):
for k, v in data.items():
if k == key:
print(f"Key: {k}, Value: {v}")
if isinstance(v, (dict, list)):
traverse_json(v, key)
elif isinstance(data, list):
for item in data:
traverse_json(item, key)
# 示例JSON数据
json_data = '''
{
"name": "John",
"age": 25,
"address": {
"street": "123 ABC Street",
"city": "New York",
"state": "NY"
},
"phoneNumbers": [
{
"type": "home",
"number": "111-111-1111"
},
{
"type": "work",
"number": "222-222-2222"
},
{
"type": "home",
"number": "333-333-3333"
}
]
}
'''
# 将JSON数据解析为Python对象
data = json.loads(json_data)
# 遍历JSON数据,并输出指定键值的结果
traverse_json(data, "type")
在上面的示例中,我们定义了一个traverse_json
函数,它可以递归遍历JSON数据,并输出指定键值的结果。我们使用isinstance
函数来判断当前值是否为字典或列表,如果是,则递归调用traverse_json
函数。如果当前键与指定的键相匹配,则输出键值对。
在上述示例中,我们遍历了JSON数据中的键名为"type"的键值对,并输出了所有匹配的结果。你可以根据自己的需求修改代码,以便输出其他键值对或进行其他操作。