文件怎样保存文字,与 JSON 怎样表示字符串,是两个相关但不同的问题。
一个完整的读写示例
用 UTF-8 打开文件,明确文字与字节之间的转换方式。下面的示例会在当前目录创建 note-example.json;如果文件已经存在,写入模式会覆盖它。
import json
data = {"title": "学习笔记", "tags": ["Python", "JSON"]}
with open("note-example.json", "w", encoding="utf-8") as file:
json.dump(data, file, ensure_ascii=False, indent=2)
with open("note-example.json", "r", encoding="utf-8") as file:
restored = json.load(file)
assert restored == data
这几个参数分别做什么?
encoding="utf-8"决定文件的文字编码。ensure_ascii=False让非 ASCII 字符直接显示,而不是写成 Unicode 转义;它不负责指定文件编码。indent=2为输出添加缩进,方便阅读。
留意数据类型
JSON 对象的键是字符串。Python 字典的部分非字符串键在序列化时可能被转换,因此任意 Python 对象并不一定都能无损往返。读取外部文件时,还应处理文件不存在、格式错误和字段缺失。
学习小结
编码写明确,转义按阅读需要选择,再检查读回来的数据是否符合预期。