Python json Module Overview
The json module is Python’s built-in tool for working with JSON data.
Use it when you need to:
- Read JSON text into Python
- Convert Python data into JSON
- Work with JSON files
- Send or receive structured data in APIs
JSON is one of the most common data formats in programming, so learning the basic json functions is very useful.
Quick example
import json
person = {"name": "Sam", "age": 25}
json_text = json.dumps(person)
print(json_text)
back_to_dict = json.loads(json_text)
print(back_to_dict["name"])
Output:
{"name": "Sam", "age": 25}
Sam
Use json.dumps() to convert a Python object to a JSON string, and json.loads() to convert a JSON string back to a Python object.
What the json module does
The json module works with JSON data in Python.
A few key points:
- JSON is a text format for storing and sending data
- It is commonly used in APIs, configuration files, and data exchange
- The
jsonmodule is part of Python’s standard library - You do not need to install anything before using it
To use it, import it first:
import json
JSON vs Python data types
When Python reads JSON, it converts JSON values into Python data types.
Here is the basic mapping:
- JSON object → Python dictionary
- JSON array → Python list
- JSON string → Python string
- JSON number → Python
intorfloat - JSON
true/false→ PythonTrue/False - JSON
null→ PythonNone
Example:
import json
json_text = '{"name": "Ana", "age": 30, "is_admin": false, "skills": ["Python", "SQL"], "manager": null}'
data = json.loads(json_text)
print(data)
print(type(data))
print(type(data["skills"]))
print(data["manager"])
Output:
{'name': 'Ana', 'age': 30, 'is_admin': False, 'skills': ['Python', 'SQL'], 'manager': None}
<class 'dict'>
<class 'list'>
None
If you want a refresher on dictionaries, see Python dictionaries explained.
Main functions to know
These are the four json functions beginners see most often:
json.loads()reads JSON from a stringjson.load()reads JSON from a file objectjson.dumps()creates a JSON string from a Python objectjson.dump()writes JSON to a file object
A simple way to remember them:
load= readdump= write- extra
s= string
If you want a deeper explanation of each one, see:
- json.load() function explained
- json.loads() function explained
- json.dump() function explained
- json.dumps() function explained
When to use each function
Use the function based on what kind of data you already have.
Use json.loads()
Use json.loads() when your JSON is already in a string.
import json
text = '{"city": "Paris", "country": "France"}'
data = json.loads(text)
print(data["city"])
Use json.load()
Use json.load() when reading JSON from a file.
import json
with open("data.json", "r") as file:
data = json.load(file)
print(data)
Use json.dumps()
Use json.dumps() when you need JSON as a string.
import json
data = {"product": "Book", "price": 12.99}
text = json.dumps(data)
print(text)
print(type(text))
Use json.dump()
Use json.dump() when saving Python data directly to a file.
import json
data = {"product": "Book", "price": 12.99}
with open("output.json", "w") as file:
json.dump(data, file)
If your goal is to parse JSON step by step, see how to parse JSON in Python.
Basic reading example
Here is a simple example of reading JSON from a string.
import json
json_text = '{"name": "Lina", "age": 22, "active": true}'
data = json.loads(json_text)
print(data)
print(data["name"])
print(data["age"])
print(type(data))
Output:
{'name': 'Lina', 'age': 22, 'active': True}
Lina
22
<class 'dict'>
What happens here:
json_textis a string containing JSONjson.loads(json_text)converts that JSON into a Python dictionary- After that, you can access values with dictionary keys like
data["name"]
Basic writing example
Here is a simple example of converting a Python dictionary into JSON.
import json
person = {
"name": "Lina",
"age": 22,
"active": True
}
json_text = json.dumps(person)
print(json_text)
print(type(json_text))
Output:
{"name": "Lina", "age": 22, "active": true}
<class 'str'>
Important:
json.dumps()returns a string- It does not return a dictionary
You can also pretty-print JSON using indent:
import json
person = {
"name": "Lina",
"age": 22,
"active": True
}
json_text = json.dumps(person, indent=4)
print(json_text)
Output:
{
"name": "Lina",
"age": 22,
"active": true
}
For more on formatting output, see how to pretty-print JSON in Python.
Working with JSON files
JSON is often stored in files. In that case, use open() together with json.load() or json.dump().
Read JSON from a file
Suppose data.json contains this:
{"username": "sam", "score": 100}
You can read it like this:
import json
with open("data.json", "r") as file:
data = json.load(file)
print(data["username"])
Write JSON to a file
import json
data = {"username": "sam", "score": 100}
with open("data.json", "w") as file:
json.dump(data, file, indent=4)
Using with open(...) is the safest approach because Python closes the file automatically when you are done.
If you need to convert a dictionary before saving it, see how to convert a dictionary to JSON in Python.
Common beginner problems
These are some of the most common mistakes when using the json module.
Mixing up load and loads
This is a very common problem.
json.load(file)reads from a file objectjson.loads(text)reads from a string
Wrong idea:
import json
text = '{"a": 1}'
data = json.load(text) # wrong
Correct:
import json
text = '{"a": 1}'
data = json.loads(text)
Mixing up dump and dumps
json.dump(data, file)writes to a filejson.dumps(data)returns a string
If you expect dumps() to create a file automatically, it will not. It only gives you a string.
Using single quotes in JSON text
Python dictionaries can use single quotes, but JSON text must use double quotes.
Wrong JSON:
"{'name': 'Sam'}"
Valid JSON:
'{"name": "Sam"}'
Forgetting that JSON keys and strings use double quotes
In JSON, object keys must use double quotes.
Invalid JSON:
'{name: "Sam"}'
Valid JSON:
'{"name": "Sam"}'
Trying to serialize unsupported Python objects directly
Some Python objects cannot be converted to JSON automatically.
For example, a set will fail:
import json
data = {"numbers": {1, 2, 3}}
json_text = json.dumps(data)
This raises an error because sets are not standard JSON data types.
One simple fix is to convert the set to a list first:
import json
data = {"numbers": list({1, 2, 3})}
json_text = json.dumps(data)
print(json_text)
What this page does not cover in depth
This page is an overview, so it does not go deep into every detail.
It does not fully cover:
- Detailed behavior of each
jsonfunction - Error handling for broken JSON
- Advanced options such as custom encoders
- Full API request workflows
If you are working with API responses, see how to handle API responses in Python.
Common causes of json problems
If your code is not working, check for these common causes:
- Using
json.loads()on a file object instead of a string - Using
json.load()on a plain string instead of a file object - Passing invalid JSON with single quotes
- Trying to convert unsupported objects like sets without preprocessing
- Assuming
dumps()returns a dictionary instead of a string
Helpful commands for quick testing:
python --version
python -c "import json; print(json.dumps({'a': 1}))"
python -c "import json; print(type(json.loads('{\"a\": 1}')))"
If the JSON text is broken, you may also run into parsing errors. For general debugging help, see ValueError in Python: causes and fixes.
FAQ
Is the json module built into Python?
Yes. It is part of Python's standard library, so you can use import json without installing anything.
What is the difference between json.load() and json.loads()?
json.load() reads JSON from a file object. json.loads() reads JSON from a string.
What is the difference between json.dump() and json.dumps()?
json.dump() writes JSON to a file object. json.dumps() returns JSON as a string.
Can JSON store every Python object?
No. JSON supports basic data types like objects, arrays, strings, numbers, booleans, and null.
Why does my JSON text fail to load?
A common reason is invalid JSON syntax, such as single quotes, missing commas, or missing double quotes around keys.