当前位置:首页 > Python > 正文

Python JSON数据保存与读取完整教程 | 实用指南

Python JSON数据保存与读取完整教程

掌握Python中JSON数据持久化的核心技巧,实现高效数据存储与读取

为什么使用JSON保存数据?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有以下优势:

  • ✅ 人类可读的文本格式
  • ✅ 语言无关的数据格式
  • ✅ 支持复杂数据结构
  • ✅ 广泛的应用支持
  • ✅ 易于解析和生成
  • ✅ 比XML更简洁高效

JSON保存数据的基本步骤

  1. 1 导入json模块 - Python内置库无需安装
  2. 2 准备Python数据结构 - 字典、列表等
  3. 3 打开文件进行写入 - 使用open()函数
  4. 4 使用json.dump()保存数据 - 将数据结构转换为JSON格式

保存JSON数据到文件

使用json.dump()方法将Python数据结构保存为JSON格式:

import json

# 准备要保存的数据(Python字典)
user_data = {
    "name": "张三",
    "age": 28,
    "is_student": False,
    "courses": ["Python", "数据分析", "机器学习"],
    "address": {
        "city": "北京",
        "postal_code": "100000"
    }
}

# 将数据保存到JSON文件
with open("user_data.json", "w", encoding="utf-8") as file:
    json.dump(user_data, file, ensure_ascii=False, indent=4)

print("数据已成功保存到user_data.json")

参数说明:

  • ensure_ascii=False - 允许保存非ASCII字符(如中文)
  • indent=4 - 使用4空格缩进,使JSON文件更易读
  • encoding="utf-8" - 指定文件编码,支持多语言

从JSON文件读取数据

使用json.load()方法读取JSON文件并转换为Python对象:

import json

# 从JSON文件读取数据
with open("user_data.json", "r", encoding="utf-8") as file:
    loaded_data = json.load(file)

# 访问数据
print(f"姓名: {loaded_data['name']}")
print(f"年龄: {loaded_data['age']}")
print("课程:")
for course in loaded_data["courses"]:
    print(f"- {course}")

# 输出结果:
# 姓名: 张三
# 年龄: 28
# 课程:
# - Python
# - 数据分析
# - 机器学习

处理复杂数据类型

JSON支持的数据类型有限,以下是如何处理Python特有数据类型:

日期时间处理

from datetime import datetime
import json

# 自定义日期编码器
def datetime_encoder(obj):
    if isinstance(obj, datetime):
        return obj.isoformat()
    raise TypeError("Type not serializable")

data = {
    "event": "会议",
    "time": datetime.now()
}

# 保存时使用自定义编码器
with open("event.json", "w") as f:
    json.dump(data, f, default=datetime_encoder)

自定义对象处理

class User:
    def __init__(self, name, email):
        self.name = name
        self.email = email

# 自定义对象编码器
def user_encoder(obj):
    if isinstance(obj, User):
        return {"name": obj.name, "email": obj.email}
    raise TypeError("Type not serializable")

user = User("李四", "lisi@example.com")

# 保存自定义对象
with open("user.json", "w") as f:
    json.dump(user, f, default=user_encoder)

JSON最佳实践总结

编码规范

  • 使用UTF-8编码
  • 使用缩进提高可读性
  • 避免过大的JSON文件

错误处理

  • 捕获JSONDecodeError
  • 处理文件不存在错误
  • 验证数据结构完整性

性能优化

  • 大数据集使用流式处理
  • 生产环境省略indent参数
  • 考虑二进制格式如MessagePack

开始使用JSON保存你的数据吧!

JSON是Python数据持久化的理想选择,简单高效且跨平台兼容

立即尝试上面的代码示例,掌握Python JSON数据存储技巧

发表评论