序列化注意事项


确保序列化和反序列化算法的一致性

不同序列化算法输出必定不同,要正确处理序列化后的数据就要使用相同的反序列化算法。

Jackson序列化与反序列化注意

Jackson 有大量的序列化和反序列化特性,可以用来微调序列化和反序列化的细节。需要注意的是,如果自定义 ObjectMapper 的 Bean,小心不要和 Spring Boot 自动配置的 Bean 冲突。

调试序列化反序列化问题注意

1. 是哪个组件在做序列化反序列化,
2. 整个过程有几次序列化反序列化,
3. 以及目前到底是序列化还是反序列化。

需要序列化的 POJO 考虑尽量不要自定义构造方法

对于反序列化默认情况下,框架调用的是无参构造方法,如果要调用自定义的有参构造方法,那么需要告知框架如何调用。更合理的方式是,对于需要序列化的 POJO 考虑尽量不要自定义构造方法。

建议在程序内部使用枚举

枚举不建议定义在 DTO 中跨服务传输,因为会有版本问题,并且涉及序列化反序列化时会很复杂,容易出错。因此,我只建议在程序内部使用枚举。

跨平台使用序列化的数据

如果需要跨平台使用序列化的数据,那么除了两端使用的算法要一致外,还可能会遇到不同语言对数据类型的兼容问题。