Append to JSON file using Python
JSON (JavaScript Object Notation) is a lightweight data format that stores data as key-value pairs within curly braces {}. Python's json module makes it easy to work with JSON data, whether you are parsing JSON strings, converting Python objects to JSON, or appending new data to existing JSON files.
Key Functions in json
Module:
1. json.loads()
Parses a JSON string and returns a Python dictionary.
Syntax: json.loads(json_string)
Parameter: It takes JSON string as the parameter.
Return type: It returns the python dictionary object.
2. json.dumps()
Converts a Python object to a JSON string.
Syntax: json.dumps(object)
Parameter: It takes Python Object as the parameter.
Return type: It returns the JSON string.
3. update()
Updates a dictionary with elements from another dictionary or iterable key-value pairs.
Syntax: dict.update([other])
Parameters: Takes another dictionary or an iterable key/value pair.
Return type: Returns None.
Example 1: Updating a JSON string.
import json
x = '{ "organization":"GeeksForGeeks","city":"Noida","country":"India"}'
# python object to be appended
y = {"pin":110096}
# parsing JSON string:
z = json.loads(x)
# appending the data
z.update(y)
# the result is a JSON string:
print(json.dumps(z))
Output:
{"organization": "GeeksForGeeks", "city": "Noida", "country": "India", "pin": 110096}
Example 2: Updating a JSON file.
The write_json() function reads the existing data, updates it, and then writes the updated data back to the file. Suppose the JSON file looks like this.

We want to add another JSON data after emp_details. Below is the implementation.
import json
# Function to append new data to JSON file
def write_json(new_data, filename='data.json'):
with open(filename, 'r+') as file:
# Load existing data into a dictionary
file_data = json.load(file)
# Append new data to the 'emp_details' list
file_data["emp_details"].append(new_data)
# Move the cursor to the beginning of the file
file.seek(0)
# Write the updated data back to the file
json.dump(file_data, file, indent=4)
# New data to append
new_employee = {
"emp_name": "Nikhil",
"email": "nikhil@geeksforgeeks.org",
"job_profile": "Full Time"
}
# Call the function to append data
write_json(new_employee)
Output:
