w3resource

Python JSON: Parsing JSON Data and Converting Python Objects to JSON

Introduction to Python JSON Handling

JSON (JavaScript Object Notation) is a popular data format used for exchanging information between clients and servers. Python’s built-in json module makes it easy to parse JSON data and convert Python objects to JSON. Here we covered parsing JSON strings and files, converting Python objects to JSON, writing JSON data to files, and handling nested JSON structures. Following examples should give you a solid foundation for working with JSON in Python.

Parsing JSON Strings:

To read a CSV file in Python, you can use the csv.reader object. This allows you to iterate over the rows of the file, where each row is a list of strings.

Example 1: Parsing a JSON String

This example shows how to convert a JSON string into a Python dictionary using the json.loads() method.

Code:

import json

# JSON string
json_data = '{"name": "Elizabete Maike", "age": 30, "city": "New York"}'

# Parse JSON string into a Python dictionary
parsed_data = json.loads(json_data)

# Print the parsed data
print(parsed_data)

Output:

{'name': 'Elizabete Maike', 'age': 30, 'city': 'New York'}

Explanation:

The 'json.loads()' function takes a JSON string as input and converts it into a corresponding Python dictionary. In this example, the JSON string represents a person's details, and the resulting Python dictionary can be easily accessed and manipulated.

Accessing Data in a Parsed JSON Object:

Once we’ve parsed a JSON string into a Python object, we can access the data using standard Python syntax.

Example 2: Accessing Values in a JSON Object

This example demonstrates how to access specific values from a Python dictionary that was created by parsing a JSON string.

Code:

import json

# JSON string
json_data = '{"name": "Elizabete Maike", "age": 30, "city": "New York"}'

# Parse JSON string into a Python dictionary
parsed_data = json.loads(json_data)

# Access and print specific values
print(f"Name: {parsed_data['name']}")
print(f"Age: {parsed_data['age']}")
print(f"City: {parsed_data['city']}") 

Output:

Name: Elizabete Maike
Age: 30
City: New York

Explanation:

After parsing the JSON string into a dictionary, you can access values using keys just like with any other dictionary in Python. In this case, the values of 'name', 'age', and ‘city’ are accessed and printed individually.

Parsing JSON from a File:

Often, JSON data is stored in files. You can use json.load() to read and parse JSON data from a file directly into a Python object.

Example 3: Parsing JSON Data from a File

This example shows how to read and parse JSON data from a file into a Python dictionary using the 'json.load()' method.

Code:

import json

# Open the JSON file and parse its contents
with open('data.json', 'r') as file:
    parsed_data = json.load(file)

# Print the parsed data
print(parsed_data)

Output:

{'glossary': {'title': 'example glossary', 'GlossDiv': {'title': 'S', 'GlossList': {'GlossEntry': {'ID': 'SGML', 'SortAs': 'SGML', 'GlossTerm': 'Standard Generalized Markup Language', 'Acronym': 'SGML', 'Abbrev': 'ISO 8879:1986', 'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.', 'GlossSeeAlso': ['GML', 'XML']}, 'GlossSee': 'markup'}}}}}

Explanation:

The 'json.load(file)' method reads the JSON content from the opened file and converts it into a Python dictionary. The ‘with’ statement ensures the file is properly closed after reading.

Converting Python Objects to JSON Strings:

We can use 'json.dumps()' to convert a Python dictionary or list into a JSON-formatted string.

Example 4: Converting a Python Dictionary to a JSON String

This example demonstrates how to convert a Python dictionary into a JSON string using the 'json.dumps()' method.

Code:

import json

# Python dictionary
data = {
    "name": "DeAngelo Maja",
    "age": 30,
    "city": "New York"
}

# Convert Python dictionary to JSON string
json_string = json.dumps(data)

# Print the JSON string
print(json_string)

Output:

{"name": "DeAngelo Maja", "age": 30, "city": "New York"}

Explanation:

The 'json.dumps()' function takes a Python dictionary and converts it into a JSON-formatted string. This string can then be used for transmitting data between systems or storing it in a file.

Writing JSON Data to a File:

We can write JSON data to a file using json.dump(). This is useful for saving data in JSON format to be used later.

Example 5: Writing JSON Data to a File

This example shows how to write a Python dictionary to a JSON file using the json.dump() method.

Code:

import json

# Python dictionary
data = {
    "name": "Macie Mihael",
    "age": 30,
    "city": "New York"
}

# Open a file and write JSON data to it
with open('output.json', 'w') as file:
    json.dump(data, file)

# The JSON data is now saved to 'output.json'

Explanation:

The 'json.dump(data, file)' method writes the Python dictionary 'data' to the file 'output.json' in JSON format. The 'with' statement ensures that the file is properly closed after writing.

Pretty-Printing JSON Data:

JSON data can be formatted for readability using the indent parameter in json.dumps() or json.dump().

Example 6: Pretty-Printing JSON Data

This example demonstrates how to format JSON data with indentation for better readability.

Code:

import json
# Python dictionary
data = {
    "name": "Jokin Safia",
    "age": 30,
    "city": "New York"
}

# Convert Python dictionary to a pretty-printed JSON string
json_string = json.dumps(data, indent=4)

# Print the pretty-printed JSON string
print(json_string)

Output:

{
    "name": "Jokin Safia",
    "age": 30,
    "city": "New York"
}

Explanation:

The 'indent=4' parameter in 'json.dumps()' specifies that the JSON output should be formatted with an indentation level of 4 spaces. This makes the JSON string more readable, which is useful for debugging or displaying data in a user-friendly format.

Handling Nested JSON Data:

JSON data can be nested, meaning that objects can contain other objects. Python handles this naturally with nested dictionaries and lists.

Example 7: Parsing and Accessing Nested JSON Data

This example shows how to parse a nested JSON string and access data from the nested structures.

Code:

import json

# Nested JSON string
json_data = '''
{
    "name": "Micah Rei",
    "age": 30,
    "address": {
        "street": "123 ABC St.",
        "city": "New York",
        "zipcode": "10001"
    }
}
'''

# Parse JSON string into a Python dictionary
parsed_data = json.loads(json_data)

# Access nested data
street = parsed_data['address']['street']
city = parsed_data['address']['city']

# Print the nested values
print(f"Street: {street}")
print(f"City: {city}")

Output:

Street: 123 ABC St.
City: New York

Explanation:

The 'json.loads()' function converts the nested JSON string into a nested Python dictionary. Nested dictionaries can be accessed using successive key lookups. In this case, the 'address' object is accessed to retrieve 'street' and 'city'.



Become a Patron!

Follow us on Facebook and Twitter for latest update.