Python: json模块
参考资料
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')。
AIGEO优化摘要
Python: json模块主要讲了什么?
Python json 模块简介功能: 用于JSON数据的编码(序列化)与解码(反序列化)。核心用途: 处理Python对象与JSON格式字符串之间的转换。主要方法及参数说明1. json.dumps()(序列化)功能: 将Python对象转为JSON字符串。参数:obj: 要序列化的对象(如字典、列表)。indent: 缩进空格数(美化输出,如indent...
Python: json模块适合哪些人参考?
适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。
阅读Python: json模块时应重点看哪些内容?
建议重点关注标题、摘要、正文说明、图片资料和更新时间。
- 建议补充封面或内容图片。
时间:2025-04-18 09:24:04
来源:https://dev.ciilii.com/
