🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
The json module in Python provides functions for serializing and deserializing JSON (JavaScript Object Notation). JSON is a lightweight data-interchange format that is easy for humans to read and write and easy for machines to parse and generate.
Table of Contents
- Introduction
- Key Functions
json.dumpjson.dumpsjson.loadjson.loads
- Customization and Extending JSON
- Custom Serialization
- Custom Deserialization
- Examples
- Writing JSON to a File
- Reading JSON from a File
- Serializing a Python Object to JSON
- Deserializing a JSON String to a Python Object
- Custom JSON Encoder
- Custom JSON Decoder
- Real-World Use Case
- Conclusion
- References
Introduction
The json module provides an easy way to encode and decode data in JSON format. It is commonly used for data interchange between systems and applications.
Key Functions
json.dump
Serializes a Python object and writes it to a file.
import json
user = {'id': 1, 'firstName': 'John', 'lastName': 'Doe', 'email': 'john.doe@example.com'}
with open('user.json', 'w') as f:
json.dump(user, f)
json.dumps
Serializes a Python object to a JSON formatted string.
import json
user = {'id': 1, 'firstName': 'John', 'lastName': 'Doe', 'email': 'john.doe@example.com'}
json_string = json.dumps(user)
print(json_string)
Output:
{"id": 1, "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com"}
json.load
Deserializes a JSON formatted file to a Python object.
import json
with open('user.json', 'r') as f:
user = json.load(f)
print(user)
Output:
{'id': 1, 'firstName': 'John', 'lastName': 'Doe', 'email': 'john.doe@example.com'}
json.loads
Deserializes a JSON formatted string to a Python object.
import json
json_string = '{"id": 1, "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com"}'
user = json.loads(json_string)
print(user)
Output:
{'id': 1, 'firstName': 'John', 'lastName': 'Doe', 'email': 'john.doe@example.com'}
Customization and Extending JSON
Custom Serialization
You can define a custom encoder to handle complex Python objects.
import json
class User:
def __init__(self, id, firstName, lastName, email):
self.id = id
self.firstName = firstName
self.lastName = lastName
self.email = email
def user_encoder(obj):
if isinstance(obj, User):
return {'id': obj.id, 'firstName': obj.firstName, 'lastName': obj.lastName, 'email': obj.email}
return json.JSONEncoder.default(obj)
user = User(1, 'John', 'Doe', 'john.doe@example.com')
json_string = json.dumps(user, default=user_encoder)
print(json_string)
Output:
{"id": 1, "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com"}
Custom Deserialization
You can define a custom decoder to handle complex JSON data.
import json
class User:
def __init__(self, id, firstName, lastName, email):
self.id = id
self.firstName = firstName
self.lastName = lastName
self.email = email
def user_decoder(dct):
if 'id' in dct and 'firstName' in dct and 'lastName' in dct and 'email' in dct:
return User(dct['id'], dct['firstName'], dct['lastName'], dct['email'])
return dct
json_string = '{"id": 1, "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com"}'
user = json.loads(json_string, object_hook=user_decoder)
print(user.id, user.firstName, user.lastName, user.email)
Output:
1 John Doe john.doe@example.com
Examples
Writing JSON to a File
import json
product = {'id': 101, 'name': 'Laptop', 'price': 999.99, 'description': 'A high-performance laptop.'}
with open('product.json', 'w') as f:
json.dump(product, f)
Reading JSON from a File
import json
with open('product.json', 'r') as f:
product = json.load(f)
print(product)
Output:
{'id': 101, 'name': 'Laptop', 'price': 999.99, 'description': 'A high-performance laptop.'}
Serializing a Python Object to JSON
import json
product = {'id': 101, 'name': 'Laptop', 'price': 999.99, 'description': 'A high-performance laptop.'}
json_string = json.dumps(product)
print(json_string)
Output:
{"id": 101, "name": "Laptop", "price": 999.99, "description": "A high-performance laptop."}
Deserializing a JSON String to a Python Object
import json
json_string = '{"id": 101, "name": "Laptop", "price": 999.99, "description": "A high-performance laptop."}'
product = json.loads(json_string)
print(product)
Output:
{'id': 101, 'name': 'Laptop', 'price': 999.99, 'description': 'A high-performance laptop.'}
Custom JSON Encoder
import json
class Product:
def __init__(self, id, name, price, description):
self.id = id
self.name = name
self.price = price
self.description = description
class ProductEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Product):
return {'id': obj.id, 'name': obj.name, 'price': obj.price, 'description': obj.description}
return json.JSONEncoder.default(self, obj)
product = Product(101, 'Laptop', 999.99, 'A high-performance laptop.')
json_string = json.dumps(product, cls=ProductEncoder)
print(json_string)
Output:
{"id": 101, "name": "Laptop", "price": 999.99, "description": "A high-performance laptop."}
Custom JSON Decoder
import json
class Product:
def __init__(self, id, name, price, description):
self.id = id
self.name = name
self.price = price
self.description = description
def product_decoder(dct):
if 'id' in dct and 'name' in dct and 'price' in dct and 'description' in dct:
return Product(dct['id'], dct['name'], dct['price'], dct['description'])
return dct
json_string = '{"id": 101, "name": "Laptop", "price": 999.99, "description": "A high-performance laptop."}'
product = json.loads(json_string, object_hook=product_decoder)
print(product.id, product.name, product.price, product.description)
Output:
101 Laptop 999.99 A high-performance laptop.
Real-World Use Case
Configuration File Handling
JSON is commonly used for configuration files. Here is an example of reading and writing a configuration file in JSON format.
import json
config = {
'database': {
'host': 'localhost',
'port': 3306,
'user': 'admin',
'password': 'admin123'
},
'debug': True
}
# Writing configuration to a file
with open('config.json', 'w') as f:
json.dump(config, f, indent=4)
# Reading configuration from a file
with open('config.json', 'r') as f:
config = json.load(f)
print(config)
Output:
{
"database": {
"host": "localhost",
"port": 3306,
"user": "admin",
"password": "admin123"
},
"debug": true
}
Conclusion
The json module in Python provides an easy and efficient way to work with JSON data. It supports serializing and deserializing Python objects to and from JSON, making it a versatile tool for data interchange and configuration management.
References
My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:
Build REST APIs with Spring Boot 4, Spring Security 7, and JWT
[NEW] Learn Apache Maven with IntelliJ IDEA and Java 25
ChatGPT + Generative AI + Prompt Engineering for Beginners
Spring 7 and Spring Boot 4 for Beginners (Includes 8 Projects)
Available in Udemy for Business
Building Real-Time REST APIs with Spring Boot - Blog App
Available in Udemy for Business
Building Microservices with Spring Boot and Spring Cloud
Available in Udemy for Business
Java Full-Stack Developer Course with Spring Boot and React JS
Available in Udemy for Business
Build 5 Spring Boot Projects with Java: Line-by-Line Coding
Testing Spring Boot Application with JUnit and Mockito
Available in Udemy for Business
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Available in Udemy for Business
Master Spring Data JPA with Hibernate
Available in Udemy for Business
Spring Boot + Apache Kafka Course - The Practical Guide
Available in Udemy for Business
Comments
Post a Comment
Leave Comment