我想知道是否有某种方法可以正确反序列化以下内容:public class MyClass { Map<String, Serializable> map; OtherObject object; [...]}ObjectMapper mapper = new ObjectMapper();MyClass instance = mapper.readValue(someJson, MyClass);目前,我正在尝试,但我得到了一个例外com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of java.io.Serializable: abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
2 回答
莫回无
TA贡献1865条经验 获得超7个赞
您可以将数据类的 Map 属性声明更改为不引用 Serializable:
public class MyClass {
Map<String, ?> map;
OtherObject object;
[...]
}
这也会影响 Map 的 getter 和 setter 的签名。然而,这确实放松了类型检查,并且映射的值可以是 Object 的任何子类,而不是 Serializable 的实现。如果这是一个重要的细节,您可以对映射值进行序列化后验证。
或者您可以配置自定义反序列化器,正如您的问题评论中所建议的那样。这只是您想在哪里添加代码的问题,这取决于这种情况在您的应用程序中的广泛程度。
添加回答
举报
0/150
提交
取消