python 复杂json的递归解析法
时间: 2024-10-05 08:03:58 浏览: 33
Python递归解析Json文件
在Python中处理复杂的JSON数据通常涉及递归函数,这是因为JSON数据可以嵌套到任意深度。递归解析方法允许你在遇到嵌套的键值对时能够继续深入并提取所需的信息。以下是一个基本的递归函数示例,用于解析 JSON 字符串:
```python
import json
def parse_json(obj, prefix=""):
if isinstance(obj, dict):
for key, value in obj.items():
new_prefix = f"{prefix}.{key}" if prefix else key
yield from parse_json(value, new_prefix)
elif isinstance(obj, list):
for index, item in enumerate(obj):
yield from parse_json(item, f"{prefix}[{index}]")
else:
yield prefix, obj
# 示例:解析复杂的JSON字符串
complex_json = """
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York"
},
"hobbies": ["reading", "gaming"]
}
"""
data = json.loads(complex_json)
for key, value in parse_json(data):
print(f"{key}: {value}")
```
在这个例子中,`parse_json` 函数会遍历字典的每个键值对和列表项,并将它们转换成形式化的路径(如 `address.street`)。递归使得我们可以在复杂结构中游走。
阅读全文