递归获取json的所有key和value
时间: 2024-03-09 11:44:20 浏览: 78
可以使用递归函数来获取json的所有key和value,以下是一个Python实现的示例代码:
```python
def get_all_keys_values(json_data):
all_keys = []
all_values = []
if isinstance(json_data, dict):
for key, value in json_data.items():
all_keys.append(key)
if isinstance(value, dict) or isinstance(value, list):
sub_keys, sub_values = get_all_keys_values(value)
all_keys.extend([f'{key}.{sub_key}' for sub_key in sub_keys])
all_values.extend(sub_values)
else:
all_values.append(value)
elif isinstance(json_data, list):
for item in json_data:
sub_keys, sub_values = get_all_keys_values(item)
all_values.extend(sub_values)
all_keys.extend(sub_keys)
return all_keys, all_values
```
这个函数接收一个json数据作为参数,然后递归地遍历这个json数据,将所有的key和value分别存储在两个列表中,并返回这两个列表。如果遇到嵌套的字典或列表,会递归调用这个函数来获取其中的key和value。可以通过调用这个函数来获取一个json数据的所有key和value,例如:
```python
import json
json_data = '{"name": "John", "age": 30, "address": {"city": "New York", "state": "NY"}, "languages": ["English", "French"]}'
data = json.loads(json_data)
all_keys, all_values = get_all_keys_values(data)
print(all_keys)
print(all_values)
```
输出结果为:
```
['name', 'age', 'address.city', 'address.state', 'languages.0', 'languages.1']
['John', 30, 'New York', 'NY', 'English', 'French']
```
注意:这个函数只适用于json数据中没有重复的key的情况,如果有重复的key,可能会导致一些key的value被覆盖。
阅读全文