我使用JavaPOJO作为流经消息代理的消息。它们使用JacksonJSON库进行序列化/反序列化。每个消息(POJO)可以有多个版本:
class UserCreatedV1 { private String email; private String fullName; }
class UserCreatedV2 { private String email; private String fullName; private String preferredName; }
(省略了getter、constructors等)。如何到达:
- 确保反序列化过程中不会发生错误,即使使用
UserCreatedV1
的客户端反序列化UserCreatedV2
的json表示(反之亦然) - 静态检查
UserCreatedV2
是否向后/向前兼容UserCreatedV1
(但不需要强制执行)
1条答案
按热度按时间owfi6suc1#
你可以用
@JsonIgnoreProperties(ignoreUnknown = true)
标记你的POJO,这样当反序列化到POJO v1时,v2专有的字段将被忽略,当从JSON v1反序列化到v2时,缺失的属性将被设置为null。您可以在此处阅读有关忽略未知属性的信息:Jackson Unmarshalling JSON with Unknown Properties