在Python中,使用`json`模块可以方便地进行JSON数据的序列化和反序列化。以下是一些基本用法和示例代码:
导入json模块
```python
import json
```
将Python对象转换为JSON字符串
```python
data = {
"name": "刺猬",
"skills": ["Python", "数据分析", "Web开发"],
"age": 30,
"is_active": True
}
json_str = json.dumps(data, ensure_ascii=False, indent=4)
print("JSON字符串:")
print(json_str)
```
将JSON字符串解析为Python对象
```python
json_str = '{"name": "张三", "age": 30, "is_student": false, "courses": ["数学", "物理"]}'
parsed_data = json.loads(json_str)
print("\n解析后的Python对象:")
print(parsed_data)
```
自定义JSON编码器
如果需要处理特定类型的对象,可以创建自定义的JSON编码器。例如,处理`datetime`对象:
```python
import json
from datetime import datetime
class DateTimeEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.isoformat()
return super(DateTimeEncoder, self).default(obj)
data = {
"name": "张三",
"birthday": datetime.now()
}
json_str = json.dumps(data, cls=DateTimeEncoder)
print(json_str)
```
使用第三方库
除了标准库外,还可以使用第三方库如`orjson`来处理JSON数据,它通常提供更高的性能和更丰富的功能。
```python
import orjson
data = {"name": "Cat", "age": 3}
json_str = orjson.dumps(data)
print(json_str)
obj = orjson.loads(json_str)
print(obj)
```
总结
序列化:使用`json.dumps()`将Python对象转换为JSON字符串。
反序列化:使用`json.loads()`将JSON字符串转换为Python对象。
自定义编码器:通过继承`json.JSONEncoder`来处理特定类型的对象。
第三方库:如`orjson`,提供更高的性能和更多功能。
这些方法可以帮助你在Python中高效地处理JSON数据。