How to Convert Dictionary to JSON in Python
If you want to turn a Python dictionary into JSON, use the built-in json module.
- Use
json.dumps()when you want a JSON string - Use
json.dump()when you want to write JSON to a file
This page shows both methods with simple examples.
Quick answer #
import json
data = {"name": "Alice", "age": 25, "active": True}
json_text = json.dumps(data)
print(json_text)
Output:
{"name": "Alice", "age": 25, "active": true}
Use json.dumps() when you want a JSON string. Use json.dump() when you want to save JSON directly to a file.
What this page helps you do #
- Convert a Python dictionary into a JSON string
- Save dictionary data as JSON in a file
- Understand the difference between
json.dumps()andjson.dump() - Avoid common beginner mistakes when working with JSON
When to use dictionary to JSON conversion #
Convert a dictionary to JSON when:
- Sending data to an API
- Saving structured data to a file
- Sharing data between Python and other languages
- Creating text output in JSON format
If you are new to dictionaries, see what a Python dictionary is.
Convert a dictionary to a JSON string with json.dumps() #
json.dumps() takes a Python object and returns a string in JSON format.
Steps:
- Import the built-in
jsonmodule - Pass the dictionary to
json.dumps() - Store or print the returned string
import json
data = {
"name": "Alice",
"age": 25,
"active": True
}
json_text = json.dumps(data)
print(json_text)
print(type(json_text))
Output:
{"name": "Alice", "age": 25, "active": true}
<class 'str'>
Important points:
datais a Python dictionaryjson_textis a string- Python
Truebecomes JSONtrue
Use this when you want to:
- Print JSON
- Send JSON in a web request
- Return JSON from a function
- Store JSON in a variable
For a deeper explanation, see json.dumps() explained.
Write a dictionary to a JSON file with json.dump() #
json.dump() writes JSON directly into a file.
Steps:
- Open a file in write mode
- Pass the dictionary and file object to
json.dump() - The JSON text is written to the file
import json
data = {
"name": "Alice",
"age": 25,
"active": True
}
with open("data.json", "w") as file:
json.dump(data, file)
This creates a file named data.json.
The file content will look like this:
{"name": "Alice", "age": 25, "active": true}
Use this when you want to save JSON to disk instead of keeping it in a Python string.
For more detail, see json.dump() explained.
Make JSON easier to read #
JSON often looks better when it is formatted.
You can use:
indent=4to add spacingsort_keys=Trueto sort keys alphabetically
Pretty-print a JSON string #
import json
data = {
"name": "Alice",
"age": 25,
"active": True
}
json_text = json.dumps(data, indent=4, sort_keys=True)
print(json_text)
Output:
{
"active": true,
"age": 25,
"name": "Alice"
}
Write formatted JSON to a file #
import json
data = {
"name": "Alice",
"age": 25,
"active": True
}
with open("data.json", "w") as file:
json.dump(data, file, indent=4, sort_keys=True)
Pretty formatting is useful when:
- Reading saved files
- Checking your output
- Debugging data problems
You can also read how to pretty-print JSON in Python.
How Python values map to JSON values #
When you convert a dictionary to JSON, Python values are changed into JSON values.
| Python | JSON |
|---|---|
dict | object |
list | array |
True | true |
False | false |
None | null |
str | string |
int, float | number |
Example:
import json
data = {
"name": "Alice",
"skills": ["Python", "JSON"],
"active": True,
"manager": None
}
print(json.dumps(data, indent=4))
Output:
{
"name": "Alice",
"skills": [
"Python",
"JSON"
],
"active": true,
"manager": null
}
JSON objects are expected to use string keys. In practice, your dictionary keys should be strings when exporting to JSON.
For a broader overview, see the Python json module overview.
Values that cannot be converted directly #
Some Python values are not supported by JSON by default.
Common examples:
set- Custom objects
- Functions
This code causes an error because a set is not JSON serializable:
import json
data = {
"name": "Alice",
"tags": {"python", "json"}
}
print(json.dumps(data))
You will get an error like:
TypeError: Object of type set is not JSON serializable
Fix unsupported values before converting #
Convert unsupported values into supported ones first.
For example, change a set into a list:
import json
data = {
"name": "Alice",
"tags": list({"python", "json"})
}
print(json.dumps(data, indent=4))
Output:
{
"name": "Alice",
"tags": [
"python",
"json"
]
}
A good rule is:
- Convert sets to lists
- Convert custom objects to dictionaries
- Convert special values to strings if needed
Beginner debugging checks #
If your conversion is not working, check these first:
- Make sure your variable is really a dictionary
- Look for unsupported data types like
set - Print the type before converting
- Read the full error message carefully
Useful debugging commands:
print(type(data))
print(data)
import json
print(json.dumps(data, indent=4))
Run your script from the terminal if needed:
python your_script.py
If you already have JSON text and want to turn it back into Python data, read how to parse JSON in Python.
Common mistakes #
These are common beginner mistakes when converting a dictionary to JSON:
- Using
json.dump()when you wanted a string instead of a file write - Using
json.dumps()and expecting it to save to a file automatically - Trying to convert unsupported types like
set - Forgetting to import the
jsonmodule - Opening the output file with the wrong mode
Example of a common mix-up:
import json
data = {"name": "Alice"}
# This returns a string, but does not save a file
json_text = json.dumps(data)
If you want to save to a file, use:
import json
data = {"name": "Alice"}
with open("data.json", "w") as file:
json.dump(data, file)
FAQ #
What is the difference between json.dump() and json.dumps()? #
json.dump() writes JSON to a file. json.dumps() returns JSON as a string.
Can I convert a nested dictionary to JSON? #
Yes. Nested dictionaries and lists can be converted as long as the values are JSON serializable.
Why does Python say an object is not JSON serializable? #
It means the value is not a supported JSON type, such as a set or custom object.
How do I make JSON output readable? #
Use indent=4 in json.dumps() or json.dump() to pretty-print the result.