如何解决Jackson:将类型信息与序列化数据一起存储
我正在创建一个支持不同序列化类型的缓存库,其中之一是Jackson
序列化很简单
public byte[] serialize(Object data) {
return objectMapper.writeValueAsBytes(data);
}
但是,在反序列化期间,将其反序列化为通用对象并不总是可行(由于没有可用的类型信息,因此我将其反序列化为通用对象)
public Object deserialize(byte[] serializedData) {
return objectMapper.readValue(decompressionInputStream,Object.class);
}
Jackson是否有可能将类型信息与序列化字节一起存储并使用相同的信息进行反序列化?
解决方法
我不知道JSON是否具有此功能,但是您可以轻松地在项目中添加这样的功能。创建一个将具有方法getClassName()或类似内容的抽象类 像这样的实现
public String getClassName() {
return getClass().getCanonicalName();
}
然后让您所有的课程都扩展这个课程。更好的是,如果您使用Java 8或更高版本,则可以将其作为具有默认方法实现的接口。然后,您只会让您的类实现此接口。因此,当您的类要序列化时,它也会存储此属性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。