Python 超过3层级的json包含了列表,已知某个最底层元素的值,请快速取出这个元素上一层的某个元素的值
时间: 2024-03-27 07:35:32 浏览: 84
python实现提取str字符串/json中多级目录下的某个值
可以使用 Python 内置的 `json` 模块来解析 JSON 数据,然后使用递归函数来查找目标元素及其上一层元素的值。具体实现如下:
```python
import json
def find_parent_element(json_data, target_value, parent_key):
"""
递归查找 JSON 数据中包含目标值的元素及其上一层元素的值
:param json_data: JSON 数据
:param target_value: 目标值
:param parent_key: 目标元素上一层的键名
:return: 目标元素上一层的值
"""
if isinstance(json_data, dict):
for key, value in json_data.items():
if value == target_value:
return json_data.get(parent_key)
else:
result = find_parent_element(value, target_value, parent_key)
if result is not None:
return result
elif isinstance(json_data, list):
for item in json_data:
result = find_parent_element(item, target_value, parent_key)
if result is not None:
return result
# 示例 JSON 数据
json_str = '{"a": {"b": [{"c": {"d": "target_value"}}]}}'
# 解析 JSON 数据
json_data = json.loads(json_str)
# 查找目标元素上一层的值
parent_value = find_parent_element(json_data, "target_value", "c")
print(parent_value) # 输出 {"d": "target_value"}
```
在上面的代码中,我们定义了一个 `find_parent_element` 函数来递归查找 JSON 数据中包含目标值的元素及其上一层元素的值。具体实现逻辑如下:
1. 如果传入的 JSON 数据是一个字典,则遍历字典的每个键值对,如果值等于目标值,则返回该键对应的上一层值,否则递归调用 `find_parent_element` 函数查找子元素。
2. 如果传入的 JSON 数据是一个列表,则遍历列表中的每个元素,递归调用 `find_parent_element` 函数查找子元素。
3. 如果在递归过程中找到了目标元素,则返回该元素上一层的值,否则返回 `None`。
使用示例中的 JSON 数据和目标值,我们调用 `find_parent_element` 函数,传入 JSON 数据、目标值和目标元素上一层的键名,即可快速取出目标元素上一层的值。上面的代码会输出 `{"d": "target_value"}`,这就是目标元素上一层的值。
阅读全文