2016-04-15 71 views
0

我試圖從項目A使用傑克遜序列化屬於項目B的類。 由於這個類有一些有趣的方法名稱,我需要使用MixIn註釋使它可以從項目A中序列化。 這很好用,但後來我被要求直接將此更改變爲項目B,因爲我們希望許多其他項目能夠對這個類進行序列化/反序列化。傑克遜忽略依賴類上的註釋

我最後決定將註釋直接進級,所以我的班成爲

public class Dog { 

public Dog(@JsonProperty("breed") String colour) { 
    this.colour = colour; 
} 
@JsonProperty("breed") 
private String colour; 
} 

這僅僅是一個例子,它顯示了類的樣子。這裏的要點是,當我在項目B中對類進行序列化/反序列化時,註釋被拾取並且所有事情都按預期工作,而當我在項目A(將項目B作爲依賴項)內部序列化/反序列化時,註釋將被忽略。有人知道爲什麼會發生這種情況嗎?

回答

1

首先要做的是升級罐子。 新的Maven依賴關係:

<dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>2.7.2</version> 
     <type>jar</type> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.7.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.7.2</version> 
     <type>jar</type> 
    </dependency> 

你可以用usings不同版本的註釋工作,但它太多的開銷,並沒有帶來任何好處。

看到:

org.codehaus.jackson versus com.fasterxml.jackson.core

http://wiki.fasterxml.com/JacksonUpgradeFrom19To20

0

問題出在傑克遜版本。 項目B使用org.codehaus.jackson註釋,而項目A使用com.fasterxml.jackson fasterxml.jackson忽略codehaus註釋。