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.