如何使用字典将新字典添加到现有的json文件中?

问题描述 投票:1回答:2

我有一个保存在本地服务器上的json文件,例如:

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

我想在这个json文件中写另一个dict,我需要这样的新内容:

    {
       {
         "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或其他方法?谢谢你的帮助!

python json list dictionary
2个回答
2
投票

你必须阅读你的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
投票

您可以使用不带字典的列表,如果有帮助,请尝试下面的解决方案

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))
© www.soinside.com 2019 - 2024. All rights reserved.