多态序列化-避坑
1. 多态序列化解决方式:
- Jackson序列化默认会带上 @class 属性,反序列化时根据 @class 属性映射到对应的子类
- Fastjson通过 SerializerFeature(如SerializerFeature.WriteClassName),序列化时会带上 @Type 属性,反序列化时根据 @Type 属性映射到对应子类
2. 这里有什么坑呢?
2.1. 坑在哪里:
使用上面两种方式序列化时,@class 和 @Type 属性值为 类的全路径,so会有什么问题呢?答案是:如果序列化数据存在数据库,你的这些类的项目结构不可变了。
2.2. 问题解法:
通过Jackson注解的别名方式(即可以 指定或自定义 对应子类的标记),解藕序列化和项目结构。