🗂️ 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)

📊 对比总结

特性JSONXML
可读性 ★★★★★ ★★★☆☆
文件大小
解析速度 较慢
数据类型 支持 需转换

🎯 最佳实践

  1. API开发: 优先使用JSON,更轻量、解析更快
  2. 配置文件: JSON适合简单配置,XML适合复杂层次结构
  3. 错误处理: 始终使用try-except处理解析异常

掌握JSON和XML处理是Python开发的必备技能!💪

本文内容部分由AI辅助生成,经人工审核整理。

posted @ 2026-03-24 03:52  码小小小仙  阅读(8)  评论(0)    收藏  举报