Python基础入门 Day92 JSON数据的读取与写入

85次阅读
没有评论

共计 2114 个字符,预计需要花费 6 分钟才能阅读完成。

在数据存储与传输中,JSON(JavaScript Object Notation)是一种非常常用的格式。它简洁、可读性强,广泛应用于接口通信、配置文件和数据存储。Python 提供了内置的 json 模块,方便我们对 JSON 数据进行读取与写入。

  1. JSON 基本概念
    JSON 是一种轻量级的数据交换格式,常见的数据结构包括:
  • 对象(字典形式){"name": "Tom", "age": 20}
  • 数组(列表形式)[1, 2, 3, 4]
  • 字符串、数值、布尔值、null

Python 与 JSON 数据的对应关系:

  • Python 字典(dict)↔ JSON 对象
  • Python 列表(list)↔ JSON 数组
  • Python 字符串(str)↔ JSON 字符串
  • Python 整数 / 浮点数 ↔ JSON 数字
  • Python True/False ↔ JSON true/false
  • Python None ↔ JSON null
  1. Python 对象转 JSON(序列化)
    使用 json.dumps() 方法,可以将 Python 对象转换为 JSON 字符串。
import json

data = {
    "name": "Alice",
    "age": 25,
    "is_student": False,
    "scores": [85, 92, 78]
}

# 序列化为 JSON 字符串
json_str = json.dumps(data)
print(json_str)

输出:

{"name": "Alice", "age": 25, "is_student": false, "scores": [85, 92, 78]}

如果需要美化输出,可以使用 indent 参数:

json_str = json.dumps(data, indent=4, ensure_ascii=False)
print(json_str)

这样会以缩进的形式输出,且中文不会被转义。

  1. JSON 字符串转 Python 对象(反序列化)
    使用 json.loads() 方法,可以将 JSON 字符串解析为 Python 对象。
import json

json_str = '{"name": "Bob", "age": 30, "is_student": true}'
data = json.loads(json_str)

print(data["name"])   # Bob
print(data["age"])    # 30
print(data["is_student"])  # True
  1. JSON 与文件交互
    在实际应用中,JSON 数据通常存储在文件中,例如配置文件或数据文件。
  • 写入 JSON 数据到文件:
import json

data = {
    "username": "admin",
    "password": "123456",
    "roles": ["editor", "admin"]
}

with open("config.json", "w", encoding="utf-8") as f:
    json.dump(data, f, indent=4, ensure_ascii=False)

这会将数据写入到 config.json 文件。

  • 从文件读取 JSON 数据:
import json

with open("config.json", "r", encoding="utf-8") as f:
    data = json.load(f)

print(data)

这样就可以把文件中的 JSON 数据读取到 Python 字典中。

  1. 异常处理
    在读取 JSON 文件时,可能会遇到格式错误的情况。可以使用 try-except 来捕获异常。
import json

try:
    with open("invalid.json", "r", encoding="utf-8") as f:
        data = json.load(f)
except json.JSONDecodeError as e:
    print(f"JSON 格式错误:{e}")
  1. 实战案例:记录用户信息
    我们可以用 JSON 来保存用户注册信息。
import json

def save_user(user, filename="users.json"):
    try:
        with open(filename, "r", encoding="utf-8") as f:
            users = json.load(f)
    except FileNotFoundError:
        users = []

    users.append(user)

    with open(filename, "w", encoding="utf-8") as f:
        json.dump(users, f, indent=4, ensure_ascii=False)

new_user = {"name": "Tom", "age": 22, "email": "[email protected]"}
save_user(new_user)

运行后,每次新增的用户信息都会保存到 users.json 文件中,便于后续管理。

总结:
本节学习了 JSON 在 Python 中的基本用法,包括数据的序列化、反序列化,以及 JSON 文件的读写操作。JSON 是现代开发中最常用的数据格式之一,熟练掌握它可以帮助我们更好地进行数据存储与交互。

思考与练习:

  1. 编写一个程序,读取 students.json 文件,统计所有学生的平均分。
  2. 修改用户信息保存的程序,避免重复保存同一邮箱的用户。
  3. 尝试从一个在线 API 获取 JSON 数据,并解析其中的内容。
正文完
 0
评论(没有评论)