我有一个模型,其字段注释为:
@JsonTypeInfo(use = CLASS)
private Object dudClass;
主要问题是,当我尝试反序列化此对象并且类路径上没有此 dudClass 实例时,我将收到异常:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Invalid type id 'pl.erbel.DudClass' (for id type 'Id.class'): no such class found.
有什么简单的方法可以忽略这个异常吗?我不想忽略序列化/反序列化,因为我需要在不同的模块中使用它。我只有两个客户端:一个在类路径上有 DudClass,第二个没有该类。
最佳答案
这可能不是完美的解决方案,但这是一种解决方法。您可以使用 JsonAnyGetter
和 JsonAnySetter
来使用附加属性,而不是在 POJO 中使用 dudClass
。您需要从父类中删除 dudClass 并包含以下代码
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
它的作用是在反序列化时,而不是每次设置响应 Map 时出现的任何其他对象时都尝试设置 dudClass,其中对象名称为键(在您的情况下为 dudClass),对象内容为值(value)。您只需查看 Map 是否存在 dudClass 键即可。
如果这不能解决您的问题或需要澄清,请告诉我!
关于java - jackson JsonMappingException : Invalid type id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372827/