Python: json模块
参考资料
Python json 模块简介
功能: 用于JSON数据的编码(序列化)与解码(反序列化)。
核心用途: 处理Python对象与JSON格式字符串之间的转换。
主要方法及参数说明
1. json.dumps()(序列化)
功能: 将Python对象转为JSON字符串。
参数:
obj: 要序列化的对象(如字典、列表)。indent: 缩进空格数(美化输出,如indent=4)。sort_keys: 是否按键排序(True/False)。ensure_ascii: 非ASCII字符是否转义(默认True,设为False可保留中文)。default: 指定自定义对象的序列化函数。
2. json.loads()(反序列化)
功能: 将JSON字符串转为Python对象。
参数:
s: JSON格式字符串。object_hook: 自定义字典的解码函数(如转为自定义类)。
3. json.dump() 与 json.load()
功能: 与
dumps/loads类似,但直接操作文件对象。参数:
需传入文件对象(如
open('file.json', 'w'))。
使用方法
序列化示例
import json
data = {"name": "Alice", "age": 25, "hobbies": ["reading", "hiking"]}
json_str = json.dumps(data, indent=4, ensure_ascii=False)
print(json_str)输出:
{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "hiking"]
}反序列化示例
json_str = '{"name": "Bob", "score": 90}'
python_dict = json.loads(json_str)
print(python_dict["name"]) # 输出: Bob文件操作示例
# 写入JSON文件
with open('data.json', 'w') as f:
json.dump(data, f)
# 读取JSON文件
with open('data.json', 'r') as f:
loaded_data = json.load(f)案例解析:自定义对象序列化
需求: 序列化一个自定义类Person的实例。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 自定义序列化函数
def person_to_dict(p):
return {"name": p.name, "age": p.age}
person = Person("Charlie", 30)
json_str = json.dumps(person, default=person_to_dict)
print(json_str) # 输出: {"name": "Charlie", "age": 30}反序列化为对象:
def dict_to_person(d): return Person(d["name"], d["age"]) python_obj = json.loads(json_str, object_hook=dict_to_person) print(python_obj.name) # 输出: Charlie
注意事项
JSON仅支持基本数据类型(字符串、数字、列表、字典、布尔值、
None)。自定义对象需通过
default参数或继承JSONEncoder类处理。文件操作时注意编码(推荐
open使用encoding='utf-8')。
本文来自《西里网 . 编程语言》 -- 发布时间:2025-03-29
本页链接:https://dev.ciilii.com/show/news-1131.html
原创声明:本篇文章均为西里网原创,由《DeepSeek-R1 模型》自动生成。内容真实性仅供参考学习。
本作品采用 知识共享署名—非商业性使用—相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行许可。
