Python json.dump() Function
The Python json.dump() function is used to serialize a Python object into a JSON formatted string and write it to a file.
This function is useful when storing data in JSON format, such as saving configurations, logging structured data, or exporting information.
Syntax
Following is the syntax of the Python json.dump() function
json.dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, indent=None, separators=None, default=None, sort_keys=False, ensure_ascii=True)
Parameters
This function accepts the following parameters
- obj: The Python object to be serialized into JSON. This can be a dictionary, list, string, etc.
- fp: The file-like object where the JSON data will be written. This is usually an open file object in write mode.
- skipkeys (optional): If True, it allows non-string keys in dictionaries. Default is False, meaning it will raise a TypeError for non-string dictionary keys.
- ensure_ascii (optional): If True (default), all non-ASCII characters are escaped in the output.
- check_circular (optional): If True (default), it checks for circular references in the object. Set to False to skip the check.
- allow_nan (optional): If True (default), NaN and Infinity values will be serialized as 'NaN' and 'Infinity'.
- indent (optional): If specified, it pretty-prints the JSON data with the specified number of spaces for indentation. Default is None (no indentation).
- separators (optional): A tuple (item_separator, key_separator) that controls the formatting of the output. Defaults to (', ', ': ').
- default (optional): A function that is called for objects that are not serializable by default. It can be used to serialize custom objects.
- sort_keys (optional): If True, the output JSON will have the dictionary keys sorted. Default is False.
Return Value
This function does not return a value. It writes the serialized JSON data directly to the provided file.
Example: Basic Usage of json.dump()
In this example, we use the json.dump() function to serialize a Python dictionary and write it to a JSON file
import json
# Python dictionary
data = {
"name": "John",
"age": 30,
"city": "New York"
}
# Open the file for writing
with open('output.json', 'w') as file:
# Serialize dictionary into JSON and write to file
json.dump(data, file)
Following is the content written to output.json file
{"name": "John", "age": 30, "city": "New York"}
Example: Pretty-Printing JSON
The indent parameter allows us to format JSON output in a more readable way by adding indentation
import json
# Python dictionary
data = {
"name": "John",
"age": 30,
"city": "New York"
}
# Open the file for writing
with open('pretty_output.json', 'w') as file:
# Serialize dictionary into JSON with indentation
json.dump(data, file, indent=4)
Following is the formatted content written to pretty_output.json file
{
"name": "John",
"age": 30,
"city": "New York"
}
Example: Sorting Keys in JSON
In this example, we use the sort_keys parameter to sort dictionary keys before writing to the JSON file
import json
# Python dictionary
data = {
"city": "New York",
"name": "John",
"age": 30
}
# Open the file for writing
with open('sorted_output.json', 'w') as file:
# Serialize dictionary into JSON with sorted keys
json.dump(data, file, indent=4, sort_keys=True)
Following is the sorted content written to sorted_output.json file
{
"age": 30,
"city": "New York",
"name": "John"
}
Example: Handling Non-Serializable Objects
Some objects like datetime are not JSON serializable by default. We can use the default parameter to define custom serialization
import json
import datetime
# Python dictionary with a datetime object
data = {
"name": "John",
"timestamp": datetime.datetime.now()
}
# Custom function to handle datetime serialization
def json_datetime_converter(obj):
if isinstance(obj, datetime.datetime):
return obj.isoformat() # Convert datetime to string
raise TypeError("Type not serializable")
# Open the file for writing
with open('datetime_output.json', 'w') as file:
# Serialize dictionary into JSON with custom function
json.dump(data, file, default=json_datetime_converter, indent=4)
Following is the content written to datetime_output.json file
{
"name": "John",
"timestamp": "2025-02-19T11:52:13.182844"
}