簡體   English   中英

如何使 fastxml ObjectMapper 與 codehaus 注釋一起使用

[英]How to make fasterxml ObjectMapper work with codehaus annotations

我正在使用fasterxml包( com.fasterxml.jackson.databind.ObjectMapper )中的ObjectMapper類來序列化一些POJO。

我面臨的問題是 POJO 中的所有注釋都來自較舊的 codehaus 庫。 fasterxml 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 類,它將被正確序列化

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM