Jackson JsonMappingException:无效的类型ID

时间:2017-02-21 16:29:27

标签: java json jackson cxf fasterxml

我的模型的字段注释为:

@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,另一个没有那个类。“/ p>

1 个答案:

答案 0 :(得分:1)

这可能不是完美的解决方案,但这是一个解决方法。您可以使用dudClassJsonAnyGetter来使用其他属性,而不是在您的POJO中使用JsonAnySetter。您需要从父类中删除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);
}

这样做的同时反序列化而不是在每次设置dudClass时设置dudClass,而是设置响应Map的任何其他对象,其中对象名称为键(在您的情况下为dudClass),对象内容为值。您只需看看Map是否存在dudClass键。

如果这不能解决您的问题或需要澄清,请告诉我们!