Z
ZHANK
文件与系统

JSON 数据处理

json.dumps/loads、文件读写、自定义编码器、datetime 序列化

JSON 数据处理

JSON 是互联网数据交换的标准格式。Python 内置 json 模块,轻松实现 Python 对象 ↔ JSON 互转。

学完本章你将掌握: loads/dumps、文件读写、美化输出、自定义序列化。


一、JSON → Python(反序列化)

python
import json

json_str = '{"name":"小明","age":20,"scores":[90,85,88]}'
data = json.loads(json_str)

print(data["name"])       # 小明
print(data["scores"][0])  # 90

JSON 与 Python 类型映射:

JSONPython
`{}`dict
`[]`list
`"str"`str
`123`int
`1.5`float
`true/false`True/False
`null`None

二、Python → JSON(序列化)

python
data = {"name": "小明", "age": 20, "skills": ["Python"]}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)  # {"name": "小明", "age": 20, "skills": ["Python"]}

⚠️ensure_ascii=False 确保中文正常显示,不加的话中文会变成 \uXXXX


三、美化输出与紧凑格式

python
data = {"name": "小明", "skills": ["Python", "Java"]}

# 缩进排版
print(json.dumps(data, indent=2, ensure_ascii=False))

# 紧凑格式(适合网络传输)
print(json.dumps(data, separators=(",", ":"), ensure_ascii=False))

四、文件读写

python
data = {"name": "小明", "age": 20}

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

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

五、排序和自定义

python
print(json.dumps({"c":3,"a":1,"b":2}, sort_keys=True)) # {"a":1,"b":2,"c":3}

小结

  1. json.loads() 字符串 → 对象,json.dumps() 对象 → 字符串
  2. json.load/dump 用于文件
  3. ensure_ascii=False 正确处理中文
  4. indent 美化,separators 紧凑