2017-12-18 188 views
0

我保存在本地服務器中的JSON文件,如:如何用字典將新字典添加到已有的json文件中?

{ 
     "user": "user1", 
     "id": "21779" 
    } 

,我要再寫詞典到這個JSON文件,我需要新的內容是這樣的:

{ 
     { 
     "user": "user1", 
     "id": "21779" 
     }, 
     { 
     "user": "user2", 
     "id": "21780" 
     } 
    } 

或者:

 [ 
     { 
     "user": "user1", 
     "id": "21779" 
     }, 
     { 
     "user": "user2", 
     "id": "21780" 
     } 
    ] 

我嘗試使用那樣json.dump()來添加新的元素,但顯示爲:

{ 
     "user": "user1", 
     "id": "21779" 
    } 
    { 
     "user": "user2", 
     "id": "21780" 
    } 

這不是一個有效的json文件。

我該如何使用json.dump,json.load或其他方法? 謝謝你的幫助!

+0

可以實現通過使用列表中的第二個條件。使用'''list.append()'''。 –

回答

1

您必須先閱讀您的JSON文件,然後將其轉換爲list而不是dict。然後,您只需追加到該列表並覆蓋您的文件JSON

import json 

data = json.load(open('data.json')) 

# convert data to list if not 
if type(data) is dict: 
    data = [data] 

# append new item to data lit 
data.append({ 
    "user": "user2", 
    "id": "21780" 
}) 

# write list to file 
with open('data.json', 'w') as outfile: 
    json.dump(data, outfile) 
+0

感謝您的回答。我已經嘗試過了,它有效! –

+0

太棒了,請接受,如果它是你想要的。 –

0

您可以用列表不與字典做,試試下面的一個解決方案,如果它的幫助

import json 

def appendList(): 
    with open("test.json", mode='r', encoding='utf-8') as f: 
     feeds = json.load(f) 
     print(feeds) 

    with open("test.json", mode='w', encoding='utf-8') as feedsjson: 
     entry = { "user": "user3","id": "21574"} 
     feeds.append(entry) 
     print(json.dump(feeds, feedsjson))