用python取json中所有不包含子节点的元素的值
时间: 2024-05-02 19:23:03 浏览: 24
可以使用递归函数来实现这个功能:
```python
import json
json_str = '''
{
"name": "Alice",
"age": 25,
"address": {
"city": "Beijing",
"province": "Beijing"
},
"hobbies": ["reading", "traveling"]
}
'''
def get_leaf_nodes(data):
if isinstance(data, dict):
return [y for x in data.values() for y in get_leaf_nodes(x)]
elif isinstance(data, list):
return [y for x in data for y in get_leaf_nodes(x)]
else:
return [data]
json_data = json.loads(json_str)
leaf_nodes = get_leaf_nodes(json_data)
print(leaf_nodes) # ['Alice', 25, 'Beijing', 'Beijing', 'reading', 'traveling']
```
这个函数会递归地遍历整个 JSON 数据,找到所有不包含子节点的元素,也就是最终的叶子节点。如果节点是一个字典,就递归地处理它的值;如果节点是一个列表,就递归地处理它的每个元素;否则就将该节点作为叶子节点返回。最终得到的结果是一个列表,包含了所有叶子节点的值。
阅读全文