java - jackson JsonMappingException : Invalid type id

标签 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,第二个没有该类。

最佳答案

这可能不是完美的解决方案,但这是一种解决方法。您可以使用 JsonAnyGetterJsonAnySetter 来使用附加属性,而不是在 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/

相关文章:

java - 如何访问同一接口(interface)的不同实现的不同属性

java - JSON 到 GSON 和 POJO 类

java - 如何在特定键处启动 Jackson JSON ObjectMapper?

json - 使用 XPages 从托管 bean 获取数据

java - Jackson - 将 Map 实现反序列化为 HashMap

java - 如何通过 RestController 创建对象的实例,而不通过 RequestBody 传递构造函数的所有字段?

java - 使用 JPA 通过一列连接并返回另一列

java - 如何使用正则表达式测试 URL 是否包含某些参数但不包含其他参数

java - 从动态 Java 类路径导入 Java 类的 Matlab 编译器 MCC 错误

java - 使用 JSON Path 从数组中提取值