Python 序列化反序列化和异常处理的问题小结

  • Post category:Python

Python 序列化反序列化和异常处理的问题小结

什么是序列化和反序列化?

序列化(Serialization)是指将对象转换为可存储或可传输格式(例如:二进制数据流、XML、JSON等)的过程。反序列化(Deserialization)则是将序列化后的数据重新转换为原有的对象的过程。

在Python中,常用的序列化和反序列化标准格式为JSON(JavaScript Object Notation),也可以使用pickle模块进行Python特有的序列化和反序列化,但是不具有通用性。

如何进行序列化和反序列化?

JSON序列化和反序列化

Python内置了JSON模块,通过json.dumps和json.loads方法可以实现Python对象和JSON格式之间的转换。

  • 序列化示例
import json

person = {
    'name': 'Tom',
    'age': 18,
    'gender': 'male'
}

json_str = json.dumps(person)
print(json_str)
  • 输出结果
'{"name": "Tom", "age": 18, "gender": "male"}'
  • 反序列化示例
import json

json_str = '{"name": "Tom", "age": 18, "gender": "male"}'
person = json.loads(json_str)
print(person)
  • 输出结果
{'name': 'Tom', 'age': 18, 'gender': 'male'}

异常处理

序列化和反序列化时常常会遇到各种各样的异常。其中一些常见的异常类型包括:

  • JSONDecodeError:在JSON反序列化时,输入无效的JSON格式字符串会报该异常。
  • TypeError:尝试序列化不支持 JSON 格式的 Python 对象,或者使用 JSON 序列化函数时指定了非法的参数类型或格式,都会报该异常。
  • AttributeError:当对 JSON 序列化函数使用了未知的参数时,会抛出 AttributeError 异常。

一般而言,我们可以使用try/except语句进行异常处理,代码如下所示:

import json

try:
    # 要进行序列化/反序列化的代码
except Exception as e:
    print('Error:', e)

总结

本文简要介绍了Python中序列化和反序列化的概念和实现方法,同时给出了常见异常及其处理方式。如对序列化和反序列化有更加深入的需求,建议查阅更多资料或官方文档。