2011-03-11 18 views
9

bana özel serisini SADECE createdon alanını jackson akışı API kanca için bir yol var mı buJSON FIELD'in java ile Jackson'a Özel Deserialization?

public class User 
{ 
    @JsonProperty 
    public Calendar createdOn; 

    @JsonProperty 
    public String name; 
} 

gibi basit bir varlık sınıfı göz önüne alındığında? Olmazsa, gelecekte böyle bir şey olabilir mi?

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

    @JsonProperty 
    public String name; 
} 

custom deserialize the entire entity yapabilirim. Sadece özel bir tarih formatı ayrıştırma veya özel bir varlık içine bir değer dizisini okuma gibi bir seriyi sadece bir alandaki serileştirmeyi özelleştirmek için bir yol varsa merak ediyorum. Normal olarak varlığın geri kalanını serileştirir.

cevap

2

Sen özel @JsonSerialize kullanarak belirli bir alan serialize tanımlayabilirsiniz:

@JsonSerialize(using=MuCustomCalendarConverter.class) 
+0

Teşekkür! (Üzgünüz, bu dokümanlardaki özledim ... http://wiki.fasterxml.com/JacksonHowToCustomDeserializers'a baktım) – jandersen

+0

Hmm ... bunu kullanmak için ObjectMapper ile özel bir şey yapmam gerekiyor mu? DateDeserializer'ı genişleten ve onu (java.util.Date türünde) mülküme uygulayan ve kurucuda bir kesme noktası oluşturan bir sınıf oluşturdum. Ayrılma noktasını serpiştirdiğimde hiçbir zaman vurulmuyor ve bir seri hale getirme hatası alıyorum (bu yüzden seriyi kaldırmak istiyorum ...) Herhangi bir fikir var mı? – jandersen

+1

Ben FromStringDeserializer 'dan geçiş yapmak için geçiş sona erdi ve bu hile yaptı ... ama ben de GAE dağıtıyorum ve ben bir temiz/yeniden yapmak kadar bir özel serializer ekleyerek aynı sorun vardı görünüyordu Benim projemde ... muhtemelen Jackson'la hiçbir ilgisi yoktu. – jandersen