Python 将2个json文件与jsonmerge合并
我想使用Python 将2个json文件与jsonmerge合并,python,json,Python,Json,我想使用jsonmerge合并许多具有相同嵌套结构的JSON文件,但到目前为止还没有成功。例如,我想合并base和head: base = { "data": [ { "author_id": "id1", "id": "1" }, { "author_id": "id2", &qu
jsonmerge
合并许多具有相同嵌套结构的JSON文件,但到目前为止还没有成功。例如,我想合并base
和head
:
base = {
"data": [
{
"author_id": "id1",
"id": "1"
},
{
"author_id": "id2",
"id": "2"
}
],
"includes": {
"users": [
{
"id": "user1",
"name": "user1"
},
{
"id": "user2",
"name": "user2"
}
]
}
}
head = {
"data": [
{
"author_id": "id3",
"id": "3"
},
{
"author_id": "id4",
"id": "4"
}
],
"includes": {
"users": [
{
"id": "user3",
"name": "user3"
},
{
"id": "user4",
"name": "user4"
}
]
}
}
生成的JSON应该是:
final_result = {
"data": [
{
"author_id": "id1",
"id": "1"
},
{
"author_id": "id2",
"id": "2"
},
{
"author_id": "id3",
"id": "3"
},
{
"author_id": "id4",
"id": "4"
}
],
"includes": {
"users": [
{
"id": "user1",
"name": "user1"
},
{
"id": "user2",
"name": "user2"
},
{
"id": "user3",
"name": "user3"
},
{
"id": "user4",
"name": "user4"
}
]
}
}
但是,我只成功地合并了数据
字段,而对于用户
来说,这似乎不起作用。这是我的代码:
from jsonmerge import merge
from jsonmerge import Merger
schema = { "properties": {
"data": {
"mergeStrategy": "append"
},
"includes": {
"users": {
"mergeStrategy": "append"
}
}
}
}
merger = Merger(schema)
result = merger.merge(base, head)
最终结果是:
{'data': [{'author_id': 'id1', 'id': '1'},
{'author_id': 'id2', 'id': '2'},
{'author_id': 'id3', 'id': '3'},
{'author_id': 'id4', 'id': '4'}],
'includes': {'users': [{'id': 'user3', 'name': 'user3'},
{'id': 'user4', 'name': 'user4'}]}}
问题在于schema
的定义,但我不知道是否可以用jsonmerge
这样做。感谢您的帮助
谢谢大家! 它是基于。因此,当您在一个对象中有一个对象(例如“包含”中的“用户”)时,您需要告诉jsonschema它正在处理另一个对象,如下所示:
schema={
“财产”:{
“数据”:{
“合并策略”:“追加”
},
“包括”:{
“类型”:“对象”,
“财产”:{
“用户”:{
“合并策略”:“追加”
}
}
}
}
}
请注意,顶级对象也会发生这种情况,因此在最高级别上有
“properties”
参数。太好了,谢谢!