JSON
Python 标准库提供了 json 模块,用于处理 JSON 数据。
常用函数
函数
作用
json.dumps(obj)
将 Python 对象(如 dict、list)转换为 JSON 字符串
json.loads(s)
将 JSON 字符串解析为 Python 对象
json.dump(obj, file)
将 Python 对象写入文件(以 JSON 格式)
json.load(file)
从文件读取 JSON 数据并解析为 Python 对象
import json
# Python 对象转 JSON 字符串
data = {"name":"Alice", "age": 20, "is_student": False}
json_str = json.dumps(data)
print(json_str)
# JSON 字符串转 Python 对象
parsed = json.loads(json_str)
print(parsed)import json
data = {"name":"Alice", "age": 20, "is_student": False}
# 写入 JSON 文件
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:
json.load(f)常用参数说明
参数
说明
ensure_ascii=False
允许输出中文等非 ASCII 字符(默认为 True,会转义)
indent=2
格式化输出,缩进空格数(便于阅读)
sort_keys=True
对字典的 key 进行排序
separators=(',', ':')
自定义分隔符(可压缩 JSON 大小)
Python 与 JSON 类型映射
Python 类型
JSON 类型
dict
object
list, tuple
array
str
string
int, float
number
True
true
False
false
None
null
自定义序列化(处理不支持的类型)
对于datetime、自定义类等不能直接序列化的对象,可以通过以下方式处理
方法 1:使用default参数
default参数方法 2: 继承json.JSONEncoder
json.JSONEncoder常见错误与注意事项
中文乱码:务必设置
ensure_ascii=False并制定文件编码utf-8。浮点精度问题:JSON 中数字无整/浮点之分,Python 会统一转位
float(大整数可能丢失精度)。对象引用vs值复制:
json.loads/dumps返回的是新对象,不会修改原数据。JSONDecodeError:解析非法 JSON 字符串时抛出。
性能建议
大量数据处理时,使用
ujson或orjson等第三方高性能库。避免在循环中频繁调用
dumps/loads,可批量处理。
最后更新于