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"
}