如何使quickxml ObjectMapper与codehaus注释一起使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使quickxml ObjectMapper与codehaus注释一起使用相关的知识,希望对你有一定的参考价值。

我正在使用来自fasterxml包(com.fasterxml.jackson.databind.ObjectMapper)的ObjectMapper类来序列化一些POJO。我面临的问题是POJO中的所有注释都来自旧的codehaus库。 fastxml ObjectMapper无法识别codehaus jackson注释。一种可能的解决方案是将POJO中的注释更新为fasterxml,但POJO由第三方提供,因此我无法对其进行修改。请提出解决此问题的方法。

答案

您可以提供自己的AnnotationIntrospector来处理旧注释。

ObjectMapper mapper = new ObjectMapper();
mapper.setAnnotationIntrospector(new MyAnnotationIntrospector());

您还可以查看jackson github上列出的jackson-legacy-introspector。它是旧注释的AnnotationIntrospector的现有实现。

另一答案

如果您可以使用继承的变通方法

// Original class doesn't need to be modified
class Customer {
     @org.codehaus.jackson.annotate.JsonProperty("first_name")
     String firstName;
}

class CustomerWrapper extends Customer {
     @com.fasterxml.jackson.annotation.JsonProperty("first_name")
     String firstName;
}

在代码中使用CustomerWrapper类,它将被正确序列化

以上是关于如何使quickxml ObjectMapper与codehaus注释一起使用的主要内容,如果未能解决你的问题,请参考以下文章

RepositoryRestMvcConfiguration 的 ObjectMapper 与 Spring Boot 默认的 ObjectMapper?

如何使用 Spring Cloud Netflix Feign 设置自定义 Jackson ObjectMapper

JSON对象与字符串相互转化ObjectMapper

如何使用 ObjectMapper 和 Realm 对象声明字典

ObjectMapper 如何基于 JSON 映射不同的对象

是否可以为单个 Spring Rest 端点自定义 ObjectMapper?