前言
开发过程中某个类并没有指定serialVersionUID,并且该类是通过序列化存储在数据库中的,并没有转换为json存储,就导致在该类添加新字段之后,原来的数据不能进行反序列化,提示反序列化异常。
复现过程
创建测试类
写入序列化对象到文件
修改serialVersionUID
忽略serialVersionUID读取类信息
编写新读取方法
测试新读取方法
此致便完成了忽略serialVersionUID不一致,导致无法反序列化读取的问题。
治本之法
上次解决方案只是忽略serialVersionUID不一致来读取,不过每次都要使用CompatibleInputStream来读取,便有些麻烦,其实我们可以在解析之后,再将其写入到文件或数据库中,这样便不用每次使用CompatibleInputStream来读取了。