Python处理JSON用json模块序列化/反序列化,支持基础类型;XML用xml.etree.ElementTree解析树状结构;两者转换需手动映射,无通用方案。
Python 中处理 JSON 和 XML 是日常开发的高频需求,核心在于理解“序列化”(对象→字符串)与“反序列化”(字符串→对象)的过程,并掌握不同格式的数据结构映射逻辑。JSON 轻量、易读、原生支持 Python 字典/列表;XML 更严格、可扩展性强,但需额外解析库。两者转换不是自动互通的,需人工定义映射规则。
Python 标准库 json 模块直接支持字典、列表、字符串、数字、布尔值和 None 的序列化,不支持自定义类或日期对象(需额外处理)。
json.dumps(),可加 indent=2 美化输出,ensure_ascii=False 保留中文json.dump(),直接写入打开的文件对象json.loads();从文件读取用 json.load()
json.JSONEncoder,重写 default() 方法,例如把 datetime 转为 ISO 格式字符串xml.etree.ElementTree(简称 ET)是 Python 内置轻量级 XML 处理模块,适合常规读写。它将 XML 映射为树状 Element 对象,节点有标签(tag)、属性(attrib)和文本(text)。
ET.fromstring(xml_str) 得到根元素;解析文件用 ET.parse("file.xml").getroot()
for child in root: 或 root.findall("item") 查找指定标签elem.attrib["id"] 获取属性,elem.text.strip() 获取并清理文本内容ET.Element("root") 创建节点,ET.SubElement(parent, "child") 添加子节点,最后用 ET.tostring() 或 tree.write() 输出JSON 和 XML 结构差异大(如 XML 有属性、命名空间、顺序敏感、混合内容),无法通用全自动转换。实用做法是明确业务字段后,手写映
射逻辑。
立即学习“Python免费学习笔记(深入)”;
@ 开头(如 {"@id": "123", "name": "Alice"}),生成时将 @id 写入 XML 属性,其余为子元素、& 等需自动转义,ET 默认处理;JSON 中的双引号、反斜杠需正确转义
实际操作中容易卡在细节,提前留意可省去大量调试时间。
json.loads(s.strip()) 去首尾空格encoding="utf-8"(尤其 open() 和 ET.parse())iterparse() 流式解析;JSON 大文件可用 ijson 库实现增量解析