JSON(JavaScript Object Notation)作为轻量级的数据交换格式,在Python开发中占据着不可替代的地位。根据2023年Stack Overflow调查报告,JSON在Web API领域的应用率高达89.3%,其核心优势体现在:
当Python需要与Java服务通信或存储配置信息时,JSON凭借其标准化结构,成为不同系统间数据交互的"通用货币"。
Python对象 → JSON字符串
JSON字符串 → Python对象
JSON类型 | Python类型 |
---|---|
object | dict |
array | list |
string | str |
number | int/float |
true | True |
false | False |
null | None |
import json
# 将Python对象转为JSON字符串
data = {"name": "Alice", "age": 28, "skills": ["Python", "SQL"]}
json_str = json.dumps(data, indent=2)
print(json_str)
输出结果:
{
"name": "Alice",
"age": 28,
"skills": [
"Python",
"SQL"
]
}
关键参数说明:
indent:缩进量(美化输出)
sort_keys:是否按键排序(默认False)
ensure_ascii:中文字符处理(默认True)
# 将JSON字符串转为Python对象
received_data = '{"city": "Beijing", "population": 2154}'
py_dict = json.loads(received_data)
print(type(py_dict)) #
print(py_dict['population']) # 2154
# 将对象序列化后写入文件
config = {
"debug_mode": False,
"max_connections": 10,
"timeout": 30.5
}
with open('config.json', 'w', encoding='utf-8') as f:
json.dump(config, f, ensure_ascii=False)
# 从文件加载并反序列化
with open('config.json', 'r', encoding='utf-8') as f:
loaded_config = json.load(f)
print(loaded_config['timeout']) # 30.5
class User:
def __init__(self, name, email):
self.name = name
self.email = email
# 自定义编码器
class UserEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, User):
return {'name': obj.name, 'email': obj.email}
return super().default(obj)
user = User("Bob", "[email protected]")
print(json.dumps(user, cls=UserEncoder)) # {"name": "Bob", "email": "[email protected]"}
data = {
"timestamp": datetime.datetime.now(),
"metrics": {
"CPU": 78.2,
"Memory": 2048
}
}
# 使用lambda处理非标准类型
json_str = json.dumps(data, default=lambda o: o.isoformat() if isinstance(o, datetime.datetime) else o.__dict__)
# 使用ujson加速(性能提升3-5倍)
import ujson
large_data = [{"id": i} for i in range(100000)]
ujson.dumps(large_data) # 比标准库快3倍
通过掌握JSON的序列化技术,开发者可以:
Python全方位指南 | Python(1)Python全方位指南:定义、应用与零基础入门实战 |
Python基础数据类型详解 | Python(2)Python基础数据类型详解:从底层原理到实战应用 |
Python循环 | Python(3)掌握Python循环:从基础到实战的完整指南 |
Python列表推导式 | Python(3.1)Python列表推导式深度解析:从基础到工程级的最佳实践 |
Python生成器 | Python(3.2)Python生成器深度全景解读:从yield底层原理到万亿级数据处理工程实践 |
Python函数编程性能优化 | Python(4)Python函数编程性能优化全指南:从基础语法到并发调优 |
Python数据清洗 | Python(5)Python数据清洗指南:无效数据处理与实战案例解析(附完整代码) |
Python邮件自动化 | Python(6)Python邮件自动化终极指南:从零搭建企业级邮件系统(附完整源码) |
Python通配符基础 | Python(7)Python通配符完全指南:从基础到高阶模式匹配实战(附场景化代码) |
Python通配符高阶 | Python(7 升级)Python通配符高阶实战:从模式匹配到百万级文件处理优化(附完整解决方案) |
Python操作系统接口 | Python(8)Python操作系统接口完全指南:os模块核心功能与实战案例解析 |
Python代码计算全方位指南 | Python(9)Python代码计算全方位指南:从数学运算到性能优化的10大实战技巧 |
Python数据类型 | Python(10)Python数据类型完全解析:从入门到实战应用 |
Python判断语句 | Python(11)Python判断语句全面解析:从基础到高级模式匹配 |
Python参数传递 | Python(12)深入解析Python参数传递:从底层机制到高级应用实践 |
Python面向对象编程 | Python(13)Python面向对象编程入门指南:从新手到类与对象(那个她)的华丽蜕变 |
Python内置函数 | Python(14)Python内置函数完全指南:从基础使用到高阶技巧 |
Python参数传递与拷贝机制 | Python(15)Python参数传递与拷贝机制完全解析:从值传递到深拷贝实战 |
Python文件操作 | Python(16)Python文件操作终极指南:安全读写与高效处理实践 |
Python字符编码 | Python(17)Python字符编码完全指南:从存储原理到乱码终结实战 |