Python JSON Parser Example

This beginner-friendly example shows how to parse JSON in Python and turn it into normal Python data.

You will learn:

  • how to import the json module
  • how to parse a JSON string with json.loads()
  • how JSON becomes Python data types
  • how to read values from the parsed result safely

If you want the shortest working example first, start here:

import json

json_text = '{"name": "Alice", "age": 25, "skills": ["Python", "SQL"]}'

data = json.loads(json_text)

print(data)
print(data["name"])
print(data["skills"][0])

Note: Use json.loads() for a JSON string. Use json.load() when reading JSON from a file.

What this example shows #

In this page, the script will show you how to:

  • import Python’s built-in json module
  • parse JSON text with json.loads()
  • understand what Python data type you get back
  • access values from dictionaries, lists, and nested data

This is a common pattern when working with:

  • API responses
  • configuration files
  • saved app data
  • practice projects that use structured data

Example input JSON #

Here is a small JSON string. It includes:

  • a string
  • a number
  • a boolean
  • a list
  • a nested object
json_text = """
{
    "name": "Alice",
    "age": 25,
    "active": true,
    "skills": ["Python", "SQL"],
    "address": {
        "city": "London"
    }
}
"""

A few important things to notice:

  • JSON uses double quotes around keys and string values.
  • true in JSON is lowercase.
  • This is still just text until Python parses it.

Parse JSON with json.loads() #

Use json.loads() when your JSON is stored in a string.

import json

json_text = """
{
    "name": "Alice",
    "age": 25,
    "active": true,
    "skills": ["Python", "SQL"],
    "address": {
        "city": "London"
    }
}
"""

data = json.loads(json_text)

print(data)
print(type(data))

What this does #

The key line is:

data = json.loads(json_text)

This converts the JSON text into Python data.

In this example, the top-level JSON value is an object, so the result becomes a Python dictionary.

Expected output:

{'name': 'Alice', 'age': 25, 'active': True, 'skills': ['Python', 'SQL'], 'address': {'city': 'London'}}
<class 'dict'>

If the JSON started with [ and ended with ], the result would usually be a Python list instead.

For a deeper explanation of this function, see json.loads() explained.

Read values from parsed JSON #

Once the JSON is parsed, you can use normal Python indexing to read values.

import json

json_text = """
{
    "name": "Alice",
    "age": 25,
    "active": true,
    "skills": ["Python", "SQL"],
    "address": {
        "city": "London"
    }
}
"""

data = json.loads(json_text)

print(data["name"])
print(data["skills"][0])
print(data["address"]["city"])

Expected output:

Alice
Python
London

How each line works #

  • data["name"] gets a top-level value from the dictionary
  • data["skills"][0] gets the first item from the skills list
  • data["address"]["city"] gets a nested value step by step

If you try to access a key that does not exist, Python raises a KeyError. See how to fix KeyError when accessing dictionary values.

Safer access with get() #

If you are not sure a key exists, get() can be safer than direct indexing.

import json

json_text = '{"name": "Alice"}'
data = json.loads(json_text)

print(data.get("name"))
print(data.get("email"))
print(data.get("email", "Not provided"))

Expected output:

Alice
None
Not provided

This helps avoid errors when some fields may be missing.

JSON types and Python types #

When Python parses JSON, the data types change like this:

  • JSON object → Python dict
  • JSON array → Python list
  • JSON string → Python str
  • JSON number → Python int or float
  • JSON true / false → Python True / False
  • JSON null → Python None

Example:

import json

json_text = """
{
    "title": "Book",
    "price": 19.99,
    "in_stock": true,
    "tags": ["fiction", "popular"],
    "discount": null
}
"""

data = json.loads(json_text)

print(type(data))
print(type(data["title"]))
print(type(data["price"]))
print(type(data["in_stock"]))
print(type(data["tags"]))
print(data["discount"])

Expected output:

<class 'dict'>
<class 'str'>
<class 'float'>
<class 'bool'>
<class 'list'>
None

Parse JSON from a file #

Use json.load() when the JSON is in a file.

import json

with open("data.json", "r") as file:
    data = json.load(file)

print(data)

load() vs loads() #

  • json.load(file) reads JSON from a file object
  • json.loads(text) reads JSON from a string

That is the main difference.

If you want a full guide, see json.load() explained and how to parse JSON in Python.

Common errors beginners make #

Here are some common problems when parsing JSON.

1. Using single quotes inside JSON text #

This is invalid JSON:

json_text = "{'name': 'Alice'}"

JSON requires double quotes:

json_text = '{"name": "Alice"}'

If your JSON syntax is wrong, Python may raise a decoding error. See how to fix JSONDecodeError for invalid JSON.

2. Confusing json.load() and json.loads() #

This is a common mix-up:

  • load = file
  • loads = string

A simple memory trick:

  • load = load from file
  • loads = load from string

3. Trying to access a missing key #

This causes an error:

import json

data = json.loads('{"name": "Alice"}')
print(data["email"])

Use get() if the key may not exist:

print(data.get("email"))

4. Forgetting that a parsed array is a list #

If the JSON starts as an array:

import json

data = json.loads('["Python", "SQL", "Git"]')
print(type(data))
print(data[0])

Expected output:

<class 'list'>
Python

You cannot use a string key like data["name"] on a list.

When to use this pattern #

This simple parsing pattern is useful when you are:

  • reading API responses
  • loading app settings from JSON
  • working with saved data files
  • practicing how structured text becomes Python objects

If you plan to use JSON from web requests, you may also like how to handle API responses in Python.

FAQ #

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 parsed JSON always become a dictionary? #

No. A JSON object becomes a dict, but a JSON array becomes a list.

Why does my JSON string fail to parse? #

It may use invalid JSON syntax, such as single quotes, missing commas, or trailing commas.

How do I get a nested value from parsed JSON? #

Use normal Python indexing step by step, such as data['user']['name'].

See also #

Press Esc to close