json模块:序列化反序列化、中文乱码、json文件读写实战
博客导语
json是前后端、配置文件主流数据格式,新手常遇到中文转义、元组序列化、日期无法序列化、缩进格式错乱四大问题,本文全覆盖解决方案。
一、四大核心方法区分
dumps:字典对象 --> json字符串(内存转换)
loads:json字符串 --> 字典对象(内存转换)
dump:字典对象 --> 写入json文件(磁盘写入)
load:读取json文件 --> 字典对象(磁盘读取)
二、中文乱码终极解决
默认dumps会将中文转为unicode转义字符,添加ensure_ascii=False关闭转义
import json data = {"name":"张三","age":20} # 中文正常显示+格式化缩进 json_str = json.dumps(data,ensure_ascii=False,indent=4)三、json文件标准读写
# 写入json文件 with open("user.json","w",encoding="utf-8") as f: json.dump(data,f,ensure_ascii=False,indent=4) # 读取json文件 with open("user.json","r",encoding="utf-8") as f: res = json.load(f)四、序列化限制与拓展
json仅支持:字典、列表、字符串、数字、布尔、None,不支持元组、日期、自定义对象
元组序列化后会转为列表,不可逆
自定义对象序列化需要传入default参数自定义转换规则
