gpt4 book ai didi

java - Jersey/Jackson - 类对象序列化

转载 作者:行者123 更新时间:2023-12-02 03:22:23 27 4
gpt4 key购买 nike

我发现了很多如何正确序列化日期的建议,但没有任何建议适用于下一种情况:

public class CustomFilter {
private String filterName;
private List<Filter> filters;
//getters and setters
}

public class Filter {
private String propertyName;
private String comparison;
private Object value;
//getters and setters
}

问题是 Filter 中的 value 属性可以是字符串、数字或日期。所以CustomFilter 的实例已正确序列化/反序列化(在客户端和资源之间),但如果 Filter 值是 Date,则它表示为 long,如果它是基于 Joda 的 Date,则表示为元素的 LinkedHashMap(反序列化时)。如果有人知道如何处理这种情况(当对象属性是对象类型但可以是上述任何类型时) - 请发表评论

最佳答案

一种选择是创建一个包含三种类型之一的容器对象

public class ValueHolder {
private Date date;
private JodatDate jodaDate;
private Number number;
private String string;
// getters and setters omitted
// maybe add additional logic to ensure only one value is set.
}

那么您应该能够毫无问题地反序列化/序列化它。如果您想使用不带容器对象的自定义序列化器来执行此操作,则需要在 json 输出中写入对象的类型,并使用该信息在接收端对其进行反序列化。

关于java - Jersey/Jackson - 类对象序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39438635/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com