2011-03-11 94 views
9

鑑於這樣用java在Jackson中自定義JSON字段的反序列化?

public class User 
{ 
    @JsonProperty 
    public Calendar createdOn; 

    @JsonProperty 
    public String name; 
} 

一個簡單的實體類是有我掛接到傑克遜流API定製反序列化僅createdOn場的方法嗎?如果沒有,那麼將來會有這樣的事情嗎?

public class User 
{ 
    @JsonProperty 
    @JsonConverter(MyCustomCalendarConverter.class) 
    public Calendar createdOn; 

    @JsonProperty 
    public String name; 
} 

看來我可以custom deserialize the entire entity。我只是很好奇,是否有一種方法可以一次性定製反序列化,例如,爲了例如自定義解析特定的日期格式,或者將一組數值讀入自定義實體等,同時讓傑克遜通常將實體的其餘部分反序列化。

回答

2

可以使用@JsonSerialize定義自定義序列的特定字段:

@JsonSerialize(using=MuCustomCalendarConverter.class) 
+0

謝謝! (對不起,我錯過了這個文檔...我一直在尋找http://wiki.fasterxml.com/JacksonHowToCustomDeserializers) – jandersen

+0

嗯...什麼特別的我需要做的ObjectMapper使用它?我創建了一個擴展DateDeserializer並將其應用於我的屬性(類型爲java.util.Date)的類,並在構造函數中創建了一個斷點。當我反序列化斷點時從來沒有命中,我得到一個反序列化錯誤(這就是爲什麼我想定製反序列化......)任何想法? – jandersen

+1

那麼,我最終切換到從'FromStringDeserializer '擴展'那就做了訣竅......但我也部署到GAE,似乎有添加自定義序列化程序相同的麻煩,直到我做了一個乾淨/重建在我的項目上......可能與傑克遜無關。 – jandersen

相關問題