如何在bean类的字段结构周期性变化的情况下反序列化同一个bean类的不同版本?

例如,我有一个稳定的服务器运行。它通过Status以 json 格式序列化一个实例,在zookeeper 实例上注册服务器状态。


一段时间后,我在Status类中添加了一个实例字段,并testserver在同一个 zookeeper 实例上开始另一个注册其服务器状态。


现在我需要编写一些检查器程序来监视两台服务器。我应该怎么做才能正确反序列化两个版本并希望处理未来版本的Status类?


我试图删除所有字段并改用地图。但是感觉不是很方便。像这样:


public class Status

{

    private int serverId;

    //...

}


// changes to

public class Status

{

    public static final String SERVERID = "serverId";


    private Map<String, Object> properties = new HashMap<>();

    //... 

}

有什么建议么?有没有处理这种情况的最佳实践?


德玛西亚99
浏览 156回答 1
1回答

胡子哥哥

如果您使用 Jackson 来序列化和反序列化您的类,您可以将配置设置为忽略未知或缺失的字段,以允许您的 Status bean 进化:FAIL_ON_UNKNOWN_PROPERTIESFAIL_ON_MISSING_CREATOR_PROPERTIES这将允许监视器使用不同版本的服务器状态 JSON 实例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java