我有一个代表调查问卷的对象结构,我需要序列化为 JSON。
该结构的一类是 OpenQuestion,该类使用带有两个参数的泛型。
当使用的其中一种类型是 Date 时,问题就开始了,日期序列化错误,比如 long。
班级代码:
public class OpenQuestion <valueType,validationType> extends AbstractQuestion implements Serializable {
private valueType value;
private validationType minValue;
private validationType maxValue;
...
}
我了解了如果哈希映射始终使用日期,如何序列化哈希映射中的日期,但在本例中,我使用带有字符串、整数或日期的类。
有什么想法可以解决吗?
谢谢
您可以添加一个JsonTypeInfo
对此的注释。有两种使用方法:
- 让它自动向您的对象添加类型注释,以便它知道将其反序列化为什么。
- 添加自定义类型解析器来为您处理此问题。
第一个会让你的 JSON 变得丑陋,但只需要很少的额外代码,并且不会强迫你创建自定义序列化器。后者更困难,但会产生更干净的 JSON。总体而言,问题部分在于您的其中一种类型未在 JSON(日期)中建模,因此您可能需要将其序列化为 JSON 文件中的整数或字符串类型。
前一个选项看起来有点像这样:
@JsonTypeInfo( use = Id.CLASS, include = As.WRAPPER_PROPERTY )
private valiationType minValue;
This should编码一个字符串值,如下所示:
{ __type = "java.lang.String", value = "Hello, World" }
不保证其准确性,因为这主要来自记忆!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)