How to append to a JSON file in Python?

Question:

I have the a JSON file which contains {"67790": {"1": {"kwh": 319.4}}}. Now I create a dictionary a_dict which I need to append to the JSON file.

I tried this code:

with open(DATA_FILENAME, 'a') as f:
   json_obj = json.dump(a_dict, json.load(f)
   f.write(json_obj)
   f.close()

What is wrong with the code? How can I fix the problem?

Asked By: PythonEnthusiast

||

Answers:

Assuming you have a test.json file with the following content:

{"67790": {"1": {"kwh": 319.4}}}

Then, the code below will load the json file, update the data inside using dict.update() and dump into the test.json file:

import json

a_dict = {'new_key': 'new_value'}

with open('test.json') as f:
    data = json.load(f)

data.update(a_dict)

with open('test.json', 'w') as f:
    json.dump(data, f)

Then, in test.json, you’ll have:

{"new_key": "new_value", "67790": {"1": {"kwh": 319.4}}}

Hope this is what you wanted.

Answered By: alecxe

You need to update the output of json.load with a_dict and then dump the result.
And you cannot append to the file but you need to overwrite it.

Answered By: Nicolas Barbey
json_obj=json.dumps(a_dict, ensure_ascii=False)
Answered By: kodeslacker
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.