在python中合并两个json文件

时间:2019-07-03 10:04:20

标签: python json python-3.x pandas python-2.7

我有一个场景,我有两个json文件。假设fileA.json和fileB.json在两个文件中都有一些数据。在文件A中,我有一些数据,在文件B中,我有一些更改需要添加到文件A中。因此,在合并两个文件之后,我希望它将数据保存在具有相同结构和更新数据的名为fileC的第三个文件中,但是数据不应丢失。

这是我的示例文件:-

fileA

{  
  "data1":[  
     {  
       "id":"1",
       "name":"abc"
     },
     {  
       "id":"2",
       "name":"xyz"
     }
  ],
 "data2":[  
     {  
       "id":"1",
       "data1_id":"2",
          "data3_ids":[  
              "1"
            ]
     },
     {  
       "id":"2",
       "user_id":"3",
          "data3_ids":[  
              "2"
            ]
     }
  ],
  "data3":[  
     {  
       "id":"1",
       "demo":"pqr",
       "title":"Never Be the Same"
     },
     {  
       "id":"2",
       "demo":"Zedd",
       "title":"The Middle"
     }
  ]
}

fileB

{  
  "data2":[  
    {  
       "id":"1",
       "data1_id":"2",
          "data3_ids":[  
               "1",
               "2"
           ]
    }
  ]
}

我想在存在data2的同一位置用fileB更新fileA,但在data2_ids中更新值为“ 2”。

这是我尝试过的代码:-

import json

with open("fileA.json") as fo:
      data1 = json.load(fo)

with open("fileB.json") as fo:
      data2 = json.load(fo)

data1.update(data2)

with open("fileC.json", "w") as fo:
      json.dump(data1, fo)

此代码面临的问题是,尽管我正在获取fileB的数据,但是却丢失了fileA的数据。谁能建议我一些解决方案。

1 个答案:

答案 0 :(得分:0)

无法发表评论。因此发布答案。您尝试过jsonmerge吗?

base = {
    "foo": 1,
    "bar": [ "one" ],
 }

head = {
     "bar": [ "two" ],
     "baz": "Hello, world!"
 }


from jsonmerge import merge
result = merge(base, head)