2011-03-11 34 views
9

Data una semplice classe di entità come questoDeserializzazione personalizzata di JSON FIELD con Jackson in java?

public class User 
{ 
    @JsonProperty 
    public Calendar createdOn; 

    @JsonProperty 
    public String name; 
} 

C'è un modo per me di collegare in streaming API Jackson per deserializzare personalizzato solo il campo createdOn? Se non c'è, allora qualcosa del genere sarebbe possibile in futuro?

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

    @JsonProperty 
    public String name; 
} 

Sembra che potrei custom deserialize the entire entity. Sono curioso di sapere se c'è un modo per personalizzare la deserializzazione solo un campo alla volta, per esempio, analizzare un particolare formato di data personalizzato, o leggere una matrice di valori in un'entità personalizzata, ecc. Lasciando che Jackson deserializzare normalmente il resto dell'entità.

risposta

2

È possibile definire personalizzato serializzare un campo specifico utilizzando @JsonSerialize:

@JsonSerialize(using=MuCustomCalendarConverter.class) 
+0

Grazie! (Mi dispiace di averlo perso nei documenti ... Ho guardato http://wiki.fasterxml.com/JacksonHowToCustomDeserializers) – jandersen

+0

Hmm ... qualcosa di speciale che ho bisogno di fare con ObjectMapper per usarlo? Ho creato una classe che estende DateDeserializer e applicato alla mia proprietà (di tipo java.util.Date) e appena creato un breakpoint nel costruttore. Quando deserializzo il breakpoint non viene mai colpito e ottengo un errore di deserializzazione (che è il motivo per cui voglio personalizzare la deserializzazione ...) Qualche idea? – jandersen

+1

Bene, ho finito per passare ad estendere da 'FromStringDeserializer ' e questo ha fatto il trucco ... ma sto anche distribuendo a GAE e sembra aver avuto lo stesso problema con l'aggiunta di un serializzatore personalizzato fino a quando ho fatto un clean/ricostruzione sul mio progetto ... probabilmente non aveva niente a che fare con Jackson, dopo tutto. – jandersen

Problemi correlati