Python JSON to Dictionary Example
If you have JSON text and want to turn it into normal Python data, the usual tool is the built-in json module.
This example shows one practical task: converting a JSON string into a Python dictionary so you can read values by key and use them in your program.
Quick example
import json
json_text = '{"name": "Alice", "age": 25, "is_admin": false}'
data = json.loads(json_text)
print(data)
print(type(data))
print(data["name"])
Output:
{'name': 'Alice', 'age': 25, 'is_admin': False}
<class 'dict'>
Alice
Use json.loads() for a JSON string. If the JSON root value is an object, it returns a Python dictionary.
What this example does
- Shows how to convert a JSON string into a Python dictionary
- Uses the built-in
jsonmodule - Explains the difference between JSON text and Python data
When to use this
Use this approach in common situations like these:
- When you get JSON from an API
- When you read JSON from a file or response body
- When you need to access values by key in Python
If you want a broader walkthrough, see how to parse JSON in Python.
Basic example with json.loads()
To convert JSON text into Python data:
- Import
json - Store the JSON in a string
- Call
json.loads(json_text) - Read values from the result
import json
json_text = '{"name": "Alice", "age": 25, "city": "London"}'
data = json.loads(json_text)
print(data)
print(data["name"])
print(data.get("age"))
Output:
{'name': 'Alice', 'age': 25, 'city': 'London'}
Alice
25
How it works
json_textis plain text in JSON formatjson.loads(json_text)parses that text- Because the top-level JSON value is an object, the result is a Python
dict
If you want more detail on this function, read json.loads() explained.
What the result looks like
JSON does not always become a dictionary. It depends on the JSON value you parse.
Here is the usual mapping:
- JSON objects become Python dictionaries
- JSON arrays become Python lists
- JSON
true,false,nullbecomeTrue,False,None
Example:
import json
json_text = '{"user": "Alice", "scores": [10, 20, 30], "active": true, "nickname": null}'
data = json.loads(json_text)
print(data)
print(type(data))
print(type(data["scores"]))
print(data["active"])
print(data["nickname"])
Output:
{'user': 'Alice', 'scores': [10, 20, 30], 'active': True, 'nickname': None}
<class 'dict'>
<class 'list'>
True
None
Example: access dictionary values
Once the JSON has been converted, you can use it like a normal dictionary.
import json
json_text = '{"name": "Alice", "age": 25}'
data = json.loads(json_text)
print(data["name"])
print(data.get("name"))
print(type(data))
Output:
Alice
Alice
<class 'dict'>
data["name"] vs data.get("name")
data["name"]gets the value for the key"name"data.get("name")also gets the value, but is safer if the key might be missing
Example:
import json
json_text = '{"name": "Alice"}'
data = json.loads(json_text)
print(data.get("age"))
Output:
None
If you use data["age"] and the key does not exist, Python raises an error. See how to fix KeyError when accessing dictionary values.
Example: nested JSON
JSON often contains objects inside objects, or lists inside objects.
import json
json_text = """
{
"user": {
"name": "Alice",
"contact": {
"email": "alice@example.com"
}
},
"skills": ["Python", "SQL"]
}
"""
data = json.loads(json_text)
print(data["user"]["name"])
print(data["user"]["contact"]["email"])
print(data["skills"][0])
Output:
Alice
alice@example.com
Python
What to notice
- Nested JSON objects become nested dictionaries
- JSON arrays become Python lists
- You access nested values one step at a time
For example:
data["user"]gives a dictionarydata["user"]["contact"]gives another dictionarydata["skills"]gives a list
JSON string vs JSON file
This is a common beginner confusion.
- Use
json.loads()for a string - Use
json.load()for a file object - Do not mix the two functions
JSON string example
import json
json_text = '{"name": "Alice"}'
data = json.loads(json_text)
print(data)
JSON file example
Suppose data.json contains:
{"name": "Alice"}
Then you would read it like this:
import json
with open("data.json", "r") as file:
data = json.load(file)
print(data)
If you want to learn that version in more detail, see json.load() explained and Python JSON module overview.
Common beginner mistakes
These are some of the most common reasons JSON conversion fails.
- Using single quotes inside JSON text
- Forgetting to import
json - Using
json.load()on a plain string - Expecting every JSON value to become a dictionary
1. Using single quotes in JSON
This is invalid JSON:
import json
json_text = "{'name': 'Alice'}"
data = json.loads(json_text)
JSON requires double quotes around keys and string values.
Correct version:
import json
json_text = '{"name": "Alice"}'
data = json.loads(json_text)
print(data)
2. Parsing Python dictionary syntax as JSON
Python dictionary syntax looks similar to JSON, but they are not the same thing.
This is Python data:
data = {"name": "Alice", "is_admin": False}
This is JSON text:
json_text = '{"name": "Alice", "is_admin": false}'
Notice the difference:
- Python uses
False - JSON uses
false
3. Using the wrong function
This is wrong because json.load() expects a file object, not a string:
import json
json_text = '{"name": "Alice"}'
data = json.load(json_text)
Use json.loads() for strings instead.
4. Assuming the result is always a dictionary
If the top-level JSON value is an array, the result will be a list:
import json
json_text = '["apple", "banana", "orange"]'
data = json.loads(json_text)
print(data)
print(type(data))
Output:
['apple', 'banana', 'orange']
<class 'list'>
FAQ
What function converts JSON to a dictionary in Python?
Use json.loads() when you have JSON as a string. If the JSON root is an object, the result is a Python dictionary.
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.
Does JSON always become a dictionary?
No. A JSON object becomes a dictionary, but a JSON array becomes a list.
Why does my JSON conversion fail?
The most common reason is invalid JSON format, especially single quotes, missing commas, or trailing commas.