python 多层嵌套json格式化
时间: 2023-09-02 14:15:37 浏览: 172
在 Python 中,可以使用 json 模块来处理 JSON 数据。如果 JSON 数据中有多层嵌套,可以使用递归函数来进行格式化处理。下面是一个示例代码:
```python
import json
def format_json(data):
if isinstance(data, dict):
return {k: format_json(v) for k, v in data.items()}
elif isinstance(data, list):
return [format_json(item) for item in data]
elif isinstance(data, str):
try:
json.loads(data)
return json.loads(data)
except ValueError:
return data
else:
return data
json_data = {
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA"
},
"hobbies": ["reading", "movies", "sports"]
}
formatted_data = format_json(json_data)
print(json.dumps(formatted_data, indent=4))
```
输出结果:
```
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA"
},
"hobbies": [
"reading",
"movies",
"sports"
]
}
```
在上面的代码中,我们定义了一个 `format_json` 函数来递归处理 JSON 数据。如果数据是一个字典类型,我们就对每个键值对进行递归处理;如果数据是一个列表类型,我们就对每个元素进行递归处理;如果数据是一个字符串类型,我们就尝试将其解析为 JSON 格式,如果可以解析成功,我们就对解析后的数据进行递归处理,否则就直接返回原字符串;对于其他类型的数据,我们直接返回原值。最后,我们使用 `json.dumps` 函数将处理后的数据输出为字符串,并设置缩进为 4 个空格,以获得格式化后的 JSON 数据。
阅读全文