模块介绍
Python 的 json
模块是一个内置的标准库,用于解析和生成 JSON(JavaScript Object Notation)格式的数据。JSON 是一种轻量级的数据交换格式,易于人类阅读和编写,同时也方便机器解析和生成。Python 的 json
库适用于 Python 3,并已成为进行 API 开发、配置文件处理、数据存储等领域的首选工具。
应用场景
- 数据序列化和反序列化:用于将 Python 对象转换为 JSON 字符串,或将 JSON 字符串转换回 Python 对象。
- API 开发:在前后端数据交换中广泛使用,JSON 格式是传输数据的理想选择。
- 配置管理:使用 JSON 文件存储和读取配置项,比传统的文本配置文件更具结构化。
- 数据存储:在数据库和文件系统中存储和读取数据,特别适用于 NoSQL 数据库。
安装说明
Python 的 json
库是默认内置模块,不需要额外安装。只需在代码中导入即可使用:
用法举例
场景一:数据序列化和反序列化
需求说明
假设有一个 Python 对象需要转成 JSON 字符串以便传输,之后还需要将此 JSON 字符串还原回原 Python 对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import json
data = { "name": "John Doe", "age": 30, "is_student": False, "courses": ["Math", "Science"] }
json_string = json.dumps(data) print(json_string)
parsed_data = json.loads(json_string) print(parsed_data)
|
场景二:读取和写入 JSON 文件
需求说明
需要将数据保存到 JSON 文件中和从 JSON 文件中读取数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import json
data = { "name": "Jane Doe", "age": 25, "is_student": True, "courses": ["History", "Physics"] }
with open('data.json', 'w') as json_file: json.dump(data, json_file)
with open('data.json', 'r') as json_file: loaded_data = json.load(json_file) print(loaded_data)
|
场景三:复杂 JSON 对象的处理
需求说明
处理包含嵌套结构和非标准数据类型的复杂 JSON 对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import json from datetime import datetime
class DateTimeEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime): return obj.isoformat() return super().default(obj)
def datetime_decoder(obj): if 'timestamp' in obj: obj['timestamp'] = datetime.fromisoformat(obj['timestamp']) return obj
complex_data = { "name": "Event", "date": datetime(2024, 5, 15, 18, 45, 12), "participants": ["Alice", "Bob", "Charlie"] }
json_complex_string = json.dumps(complex_data, cls=DateTimeEncoder) print(json_complex_string)
complex_data_loaded = json.loads(json_complex_string, object_hook=datetime_decoder) print(complex_data_loaded)
|
强烈建议大家关注我的博客(全糖冲击博客),这是一个包含所有 Python 标准库使用教程的宝库,方便查询和学习。关注我的博客,您将获得:
- 详细的教程:无论是新手教程还是高级用法,我们都为您准备了详尽的指南。
- 持续更新:随着 Python 版本更新,我们将不断更新教程内容,确保您获取最新的知识。
- 社区互动:与其他 Python 爱好者交流学习,分享经验和心得。
关注全糖冲击博客,让我们一起在 Python 编程的世界里不断进步!
软件版本可能变动
如果本文档不再适用或有误,请留言或联系我进行更新。让我们一起营造良好的学习氛围。感谢您的支持! - Travis Tang