🗂️ Python JSON/XML数据处理完全指南:从入门到实战
数据交换格式是现代应用开发的核心。本文将深入讲解Python中JSON和XML数据的处理方法,从基础解析到实际应用场景。
📌 JSON数据处理
JSON (JavaScript Object Notation) 是轻量级的数据交换格式,易于人类阅读和编写,也易于机器解析和生成。
1. JSON基础
import json
# JSON字符串示例
json_str = '''
{
"name": "Alice",
"age": 25,
"is_student": false,
"courses": ["Python", "JavaScript", "Go"],
"address": {
"city": "Beijing",
"zipcode": "100000"
}
}
'''
2. JSON解析 (loads)
import json
# JSON字符串转Python对象
json_str = '{"name": "Alice", "age": 25}'
data = json.loads(json_str)
print(data["name"]) # Alice
print(data["age"]) # 25
print(type(data)) # <class 'dict'>
# 处理JSON数组
json_array = '[1, 2, 3, "hello"]'
items = json.loads(json_array)
print(items) # [1, 2, 3, 'hello']
3. JSON序列化 (dumps)
import json
# Python对象转JSON字符串
data = {
"name": "Bob",
"age": 30,
"skills": ["Python", "Go"]
}
# 基础序列化
json_str = json.dumps(data)
print(json_str)
# {"name": "Bob", "age": 30, "skills": ["Python", "Go"]}
# 美化输出
pretty_json = json.dumps(data, indent=2, ensure_ascii=False)
print(pretty_json)
4. 文件读写
import json
# 写入JSON文件
data = {"users": [{"name": "Alice"}, {"name": "Bob"}]}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, indent=2, ensure_ascii=False)
# 读取JSON文件
with open("data.json", "r", encoding="utf-8") as f:
loaded_data = json.load(f)
print(loaded_data["users"])
5. 处理特殊类型
import json
from datetime import datetime
# 自定义JSON编码器
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime("%Y-%m-%d %H:%M:%S")
return super().default(obj)
# 使用自定义编码器
data = {
"name": "Event",
"time": datetime.now()
}
json_str = json.dumps(data, cls=CustomEncoder)
print(json_str)
📋 XML数据处理
XML (eXtensible Markup Language) 是一种标记语言,常用于配置文件和数据交换。
1. ElementTree基础
import xml.etree.ElementTree as ET
# XML字符串
xml_data = '''
<library>
<book id="1">
<title>Python编程</title>
<author>张三</author>
<price>59.99</price>
</book>
</library>
'''
# 解析XML
root = ET.fromstring(xml_data)
2. 遍历XML元素
import xml.etree.ElementTree as ET
root = ET.fromstring(xml_data)
# 遍历所有book元素
for book in root.findall("book"):
book_id = book.get("id")
title = book.find("title").text
author = book.find("author").text
price = book.find("price").text
print(f"ID: {book_id}, 标题: {title}")
3. XML文件读写
import xml.etree.ElementTree as ET
# 创建XML树
root = ET.Element("config")
server = ET.SubElement(root, "server")
ET.SubElement(server, "host").text = "localhost"
ET.SubElement(server, "port").text = "8080"
# 写入文件
tree = ET.ElementTree(root)
tree.write("config.xml", encoding="utf-8", xml_declaration=True)
📊 对比总结
| 特性 | JSON | XML |
|---|---|---|
| 可读性 | ★★★★★ | ★★★☆☆ |
| 文件大小 | 小 | 大 |
| 解析速度 | 快 | 较慢 |
| 数据类型 | 支持 | 需转换 |
🎯 最佳实践
- API开发: 优先使用JSON,更轻量、解析更快
- 配置文件: JSON适合简单配置,XML适合复杂层次结构
- 错误处理: 始终使用try-except处理解析异常
掌握JSON和XML处理是Python开发的必备技能!💪
本文内容部分由AI辅助生成,经人工审核整理。

浙公网安备 33010602011771号