2014-09-12 61 views
0

我有兩個文件充滿了JSON對象。一個是使用Python模塊xmltodict從XML轉換而來的。一旦我將所有的XML作爲字符串,我使用json.dumps將它們轉換爲JSON對象。在另一個文件中,我有一堆來自HTTP GET請求的JSON對象。我的目標是將第一個文件與第二個文件進行比較,如果第一個文件有一個JSON對象,其中name鍵與第二個文件中的任何對象name鍵不匹配,則將其添加到第二個文件中。我的問題是沒有人有建議如何做到這一點?或者我會不得不採取冷硬解析?下面的僞代碼是我目前認爲要做到的:如何比較python 2.7中的兩個JSON文件?

postFlag = 0 
for obj1 in file1:      #for each JSON object in first file 
    for obj2 in file2:     #compare to each JSON object in second file. 
     if obj1.name == obj2.name:  #if they match, 
      postFlag = 0    #prepare to not post 
      break      #and go to next JSON object in file1 
     else:       #if they dont match 
      postFlag = 1    #prepare to post 
    if postFlag == 1:     #if went through all obj2 and no match, then add to file2 
     add obj1 to file2 

回答

-1

您需要類似this?你有沒有試過JSON tools

pip install json_tools 

和從命令行嘗試

json diff file1.json file2.json > output.json 

,然後使用以用於進一步處理的輸出。

+2

雖然這些鏈接可以回答這個問題,最好是在這裏有答案的基本部分,並提供了參考鏈接的東西。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – MattDMo 2014-09-12 17:06:19

+0

不完全。兩個文件中的JSON對象不一定具有相同的數據。唯一確認它們共享的數據是'name'鍵 – sbru 2014-09-12 17:06:31

+0

從輸出中只保存所需的數據 – sidj9n 2014-09-12 17:11:20

0

考慮像下面的代碼

dict_1 = { o.name: o for o in file1 } # Construct a dict of name:object 
# Use set operation to find the name not in file2 
for need_insert in set(dict_1) - set([ o.name for o in file2 ]): 
    add dict1[need_insert] to file2