Python JSON
JSON is the short form for JavaScript Object Notation.This is a lightweight data-interchange format that is relatively easy to read and write for humans but easier for machines to parse. It is the language based from which JSON may be built; however, it is not language dependent, and now can work with several programming languages, most notably with Python.
In Python, the json
module provides a way to encode and decode JSON data. Let’s dive into the details:
What is JSON?
JSON represents data as key-value pairs, arrays, and nested structures. It is most commonly used to transfer data between a server and a client in web applications.
JSON Syntax
- Objects: Represented as key-value pairs enclosed in
{}
.
{
"name": "John",
"age": 30,
"isStudent": false
}
- Arrays: Represented as a list of values enclosed in
[]
.
["apple", "banana", "cherry"]
- Values: Can be strings, numbers, booleans, null, objects, or arrays.
Python json
Module
The json
module provides two major functionalities:
- Serialization: It converts Python objects into JSON strings.
- Deserialization: It converts JSON strings into Python objects.
1. Serialization (Python → JSON)
Serialization is done using the json.dump()
and json.dumps()
methods.
json.dumps()
Converts a Python object into a JSON string.
import json
data = {
"name": "Alice",
"age": 25,
"isStudent": True
}
json_string = json.dumps(data)
print(json_string) # {"name": "Alice", "age": 25, "isStudent": true}
json.dump()
Writes a Python object as JSON into a file.
with open("data.json", "w") as file:
json.dump(data, file)
2. Deserialization (JSON → Python)
Deserialization is done using the json.load()
and json.loads()
methods.
json.loads()
Converts a JSON string into a Python object.
json_data = '{"name": "Bob", "age": 30, "isStudent": false}'
python_data = json.loads(json_data)
print(python_data) # {'name': 'Bob', 'age': 30, 'isStudent': False}
json.load()
Reads JSON data from a file and converts it into a Python object.
with open("data.json", "r") as file:
data = json.load(file)
print(data)
Supported Conversions
JSON Type | Python Type |
---|---|
Object | dict |
Array | list |
String | str |
Number (int) | int |
Number (float) | float |
true | True |
false | False |
null | None |
Customizing Serialization
You can customize the behavior of json.dumps()
with optional parameters like indent
, sort_keys
, and separators
.
Pretty Printing
json_string = json.dumps(data, indent=4)
print(json_string)
Sorting Keys
json_string = json.dumps(data, sort_keys=True)
print(json_string)
Handling Errors
JSONDecodeError
: Raised if the JSON string is invalid.- Example:
try:
json_data = json.loads('{"name": "Alice" "age": 25}') # Missing comma
except json.JSONDecodeError as e:
print("Invalid JSON:", e)
Use Cases
- Web APIs: JSON is widely used in REST APIs to exchange data.
- Configuration Files: Applications often use JSON files for settings.
- Data Storage: JSON is used for lightweight, human-readable storage.