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”
参数。

太好了,谢谢!