1、json.dumps() 和 json.loads() 方法
使用 json.dumps()
方法将 Python 对象转换为 JSON 格式字符串。
使用 json.loads()
方法将 JSON 格式字符串解析为 Python 对象。
import json
# Python 对象转换为 JSON 字符串
data = {
"person": {
"name": "John Doe",
"age": 35,
"address": {
"street": "123 Main St",
"city": "Anytown",
"zipcode": "12345"
},
"email": [
"john.doe@example.com",
"johndoe@gmail.com"
]
},
"is_active": True,
"orders": [
{
"order_id": "A123",
"products": [
{
"product_id": "P001",
"name": "Product 1",
"price": 19.99
},
{
"product_id": "P002",
"name": "Product 2",
"price": 29.99
}
]
},
{
"order_id": "B456",
"products": [
{
"product_id": "P003",
"name": "Product 3",
"price": 39.99
}
]
}
]
}
json_string = json.dumps(data)
print("JSON字符串:\n"+json_string)
# JSON 字符串解析为 Python 对象
parsed_data = json.loads(json_string)
print("JSON对象:")
print(parsed_data)
2、json.dump() 和 json.load() 方法(文件读写)
使用 json.dump()
方法将 Python 对象写入 JSON 文件。
使用 json.load()
方法从 JSON 文件中读取并解析 Python 对象。
import json
# Python 对象转换为 JSON 字符串
data = {
"person": {
"name": "John Doe",
"age": 35,
"address": {
"street": "123 Main St",
"city": "Anytown",
"zipcode": "12345"
},
"email": [
"john.doe@example.com",
"johndoe@gmail.com"
]
},
"is_active": True,
"orders": [
{
"order_id": "A123",
"products": [
{
"product_id": "P001",
"name": "Product 1",
"price": 19.99
},
{
"product_id": "P002",
"name": "Product 2",
"price": 29.99
}
]
},
{
"order_id": "B456",
"products": [
{
"product_id": "P003",
"name": "Product 3",
"price": 39.99
}
]
}
]
}
with open('data.json', 'w') as json_file:
json.dump(data, json_file)
# 从 JSON 文件中读取并解析 Python 对象
with open('data.json', 'r') as json_file:
parsed_data = json.load(json_file)
print("JSON对象:")
print(parsed_data)
3、json.JSONEncoder 和 json.JSONDecoder 类
自定义 JSON 编码器和解码器,然后使用这些自定义类。
import json
# Python 对象转换为 JSON 字符串
data = {
"person": {
"name": "John Doe",
"age": 35,
"address": {
"street": "123 Main St",
"city": "Anytown",
"zipcode": "12345"
},
"email": [
"john.doe@example.com",
"johndoe@gmail.com"
]
},
"is_active": True,
"orders": [
{
"order_id": "A123",
"products": [
{
"product_id": "P001",
"name": "Product 1",
"price": 19.99
},
{
"product_id": "P002",
"name": "Product 2",
"price": 29.99
}
]
},
{
"order_id": "B456",
'numbers': {1, 2, 3},
"products": [
{
"product_id": "P003",
"name": "Product 3",
"price": 39.99
}
]
}
]
}
# 自定义 JSON 编码器
class MyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, set):
return list(obj)
return super().default(obj)
json_string = json.dumps(data, cls=MyEncoder)
print("JSON字符串:\n"+json_string)
# 自定义 JSON 解码器
def as_set(dct):
if 'numbers' in dct:
return set(dct['numbers'])
return dct
# JSON 字符串解析为 Python 对象
parsed_data = json.loads(json_string, object_hook=as_set)
print("JSON对象:")
print(parsed_data)
4、json.JSONEncoder 的 default 方法和 object_hook 参数
使用 default 方法自定义编码器,然后使用 object_hook 参数自定义解码器。
import json
# Python 对象转换为 JSON 字符串
data = {
"person": {
"name": "John Doe",
"age": 35,
"address": {
"street": "123 Main St",
"city": "Anytown",
"zipcode": "12345"
},
"email": [
"john.doe@example.com",
"johndoe@gmail.com"
]
},
"is_active": True,
"orders": [
{
"order_id": "A123",
"products": [
{
"product_id": "P001",
"name": "Product 1",
"price": 19.99
},
{
"product_id": "P002",
"name": "Product 2",
"price": 29.99
}
]
},
{
"order_id": "B456",
'numbers': {1, 2, 3},
"products": [
{
"product_id": "P003",
"name": "Product 3",
"price": 39.99
}
]
}
]
}
# 自定义 JSON 编码器的 default 方法
def custom_encoder(obj):
if isinstance(obj, set):
return list(obj)
raise TypeError(f'Object of type {type(obj)} is not JSON serializable')
json_string = json.dumps(data, default=custom_encoder)
print("JSON字符串:\n"+json_string)
# 自定义 JSON 解码器
def custom_decoder(dct):
if 'numbers' in dct:
return set(dct['numbers'])
return dct
# JSON 字符串解析为 Python 对象
parsed_data = json.loads(json_string, object_hook=custom_decoder)
print("JSON对象:")
print(parsed_data)
5、simplejson 模块
使用 simplejson 模块,它是一个第三方 JSON 库,功能与内置的 json 模块类似。
import simplejson as json
# Python 对象转换为 JSON 字符串
data = {
"person": {
"name": "John Doe",
"age": 35,
"address": {
"street": "123 Main St",
"city": "Anytown",
"zipcode": "12345"
},
"email": [
"john.doe@example.com",
"johndoe@gmail.com"
]
},
"is_active": True,
"orders": [
{
"order_id": "A123",
"products": [
{
"product_id": "P001",
"name": "Product 1",
"price": 19.99
},
{
"product_id": "P002",
"name": "Product 2",
"price": 29.99
}
]
},
{
"order_id": "B456",
"products": [
{
"product_id": "P003",
"name": "Product 3",
"price": 39.99
}
]
}
]
}
json_string = json.dumps(data)
print("JSON字符串:\n"+json_string)
# JSON 字符串解析为 Python 对象
parsed_data = json.loads(json_string)
print("JSON对象:")
print(parsed_data)