Daisy.Hsu
Daisy.Hsu

Reputation: 69

How to add new dictionary into existed json file with dictionary?

I have a json file saved in local server, such as:

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

and I want to write another dict into this json file, I need new content like this:

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

Or:

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

I try to use json.dump() to add the new element, but is displayed as:

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

It is not a valid json file.

How can I do use json.dump, json.load, or other methods? Thanks for help me!

Upvotes: 6

Views: 20136

Answers (2)

Pandit Biradar
Pandit Biradar

Reputation: 1877

You can do with the list not with the dict , try the below one solution if its help

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))

Upvotes: 0

Vipin Kumar
Vipin Kumar

Reputation: 6546

You have to read your JSON file and then convert it to list instead of dict. Then you just need to append to that list and overwrite your JSON file.

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)

Upvotes: 10

Related Questions