python 遍历获取json key 对应的 多个value
时间: 2023-06-26 20:09:49 浏览: 55
可以使用递归函数来遍历 JSON 中的所有键值对,并查找指定键的多个值。以下是一个示例代码:
```python
def find_values(key, json_dict):
results = []
# 如果当前值是一个字典,则递归调用自身
if isinstance(json_dict, dict):
for k, v in json_dict.items():
if k == key:
results.append(v)
elif isinstance(v, dict):
results.extend(find_values(key, v))
elif isinstance(v, list):
for item in v:
results.extend(find_values(key, item))
# 如果当前值是一个列表,则递归调用自身
elif isinstance(json_dict, list):
for item in json_dict:
results.extend(find_values(key, item))
return results
```
这个函数接受两个参数:要查找的键和 JSON 字典。它会递归地遍历整个 JSON 树,查找所有与指定键匹配的值,并将它们添加到结果列表中。如果值是一个列表或字典,则递归调用自身来查找更多匹配项。
以下是一个使用示例:
```python
import json
# 示例 JSON 数据
json_data = '''
{
"name": "John",
"age": 30,
"pets": [
{"name": "Fluffy", "type": "cat"},
{"name": "Fido", "type": "dog"}
],
"friends": [
{"name": "Alice", "age": 28},
{"name": "Bob", "age": 35}
]
}
'''
# 将 JSON 数据解析为 Python 对象
data = json.loads(json_data)
# 查找 "name" 对应的所有值
results = find_values("name", data)
print(results) # 输出: ['John', 'Fluffy', 'Fido', 'Alice', 'Bob']
```
在这个示例中,我们将 JSON 数据解析为 Python 对象,并使用 `find_values` 函数查找所有名为 "name" 的值。结果是一个包含所有匹配值的列表,包括顶层键值对和嵌套在列表和字典中的值。