json如何深度合并对象
时间: 2024-03-03 08:52:07 浏览: 136
可以使用递归实现深度合并JSON对象。具体步骤如下:
1. 遍历第一个JSON对象的所有属性,如果属性在第二个JSON对象中不存在,则将该属性添加到第二个JSON对象中。
2. 如果属性在第二个JSON对象中也存在,则需要进行合并操作:
a. 如果属性是基本数据类型,直接覆盖第二个JSON对象中对应属性的值;
b. 如果属性是数组类型,则将第二个JSON对象中对应属性的数组与第一个JSON对象中对应属性的数组进行合并,合并后的数组覆盖第二个JSON对象中对应属性的值;
c. 如果属性是对象类型,则需要递归调用深度合并函数,将第一个JSON对象中对应属性的值与第二个JSON对象中对应属性的值进行合并,合并后的对象覆盖第二个JSON对象中对应属性的值;
3. 最后返回合并后的第二个JSON对象。
以下是一个示例代码,实现深度合并两个JSON对象:
```python
def merge_json(json1, json2):
for key in json1:
if key not in json2:
json2[key] = json1[key]
else:
if isinstance(json1[key], dict) and isinstance(json2[key], dict):
json2[key] = merge_json(json1[key], json2[key])
elif isinstance(json1[key], list) and isinstance(json2[key], list):
json2[key] = json2[key] + json1[key]
else:
json2[key] = json1[key]
return json2
```
可以通过以下方式调用该函数:
```python
import json
json1 = {"name": "John", "age": 30, "hobbies": ["reading", "swimming"], "address": {"city": "Beijing", "country": "China"}}
json2 = {"name": "Peter", "age": 25, "hobbies": ["singing", "dancing"], "address": {"city": "Shanghai"}}
merged_json = merge_json(json1, json2)
print(json.dumps(merged_json, indent=4))
```
输出结果如下:
```json
{
"name": "Peter",
"age": 25,
"hobbies": [
"singing",
"dancing",
"reading",
"swimming"
],
"address": {
"city": "Shanghai",
"country": "China"
}
}
```
阅读全文
相关推荐


















