2011-03-11 17 views
9

Biorąc pod uwagę prostą klasę encji jak tenZwyczajna deserializacja JSON FIELD z Jacksonem w języku Java?

public class User 
{ 
    @JsonProperty 
    public Calendar createdOn; 

    @JsonProperty 
    public String name; 
} 

Czy istnieje sposób dla mnie aby podłączyć do jackson streamingu API obyczajowa deserializowania tylko pole createdon? Jeśli nie, to czy w przyszłości będzie to możliwe?

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

    @JsonProperty 
    public String name; 
} 

Wygląda na to, że mogę custom deserialize the entire entity. Jestem po prostu ciekawy, czy istnieje sposób, aby dostosować deserializację tylko pola na raz, aby na przykład sparsować konkretny format daty, lub odczytać tablicę wartości do niestandardowej jednostki itp., Jednocześnie pozwalając Jacksonowi deserializować resztę obiektu normalnie.

Odpowiedz

2

Można zdefiniować swoje własne serializacji konkretnego pola używając @JsonSerialize:

@JsonSerialize(using=MuCustomCalendarConverter.class) 
+0

Dzięki! (Przepraszam, ominąłem to w dokumentach ... Patrzyłem na http://wiki.fasterxml.com/JacksonHowToCustomDeserializers) – jandersen

+0

Hmm ... Coś specjalnego, co muszę zrobić z ObjectMapper, aby to wykorzystać? Stworzyłem klasę, która rozszerza DateDeserializer i zastosował ją do mojej właściwości (typu java.util.Date) i właśnie utworzył punkt przerwania w konstruktorze. Kiedy deserializacji punktu przerwania nigdy nie jest trafiony i pojawia się błąd deserializacji (dlatego chcę dostosować deserializacji ...) Wszelkie pomysły? – jandersen

+1

Cóż, skończyło się przełączanie na rozszerzenie z 'FromStringDeserializer ' i to działało ... ale wdrażam także GAE i wydawało mi się, że miałem taki sam problem z dodaniem niestandardowego serializera, dopóki nie zrobiłem czystego/odbudowałem w moim projekcie ... prawdopodobnie nie miał nic wspólnego z Jacksonem. – jandersen

Powiązane problemy