2011-03-11 2 views
9

나 사용자 정의 직렬화 만 createdOn 필드에 잭슨 스트리밍 API로 후크 할 수있는 방법이 있나요이Java에서 Jackson과 JSON FIELD의 사용자 정의 비 직렬화?

public class User 
{ 
    @JsonProperty 
    public Calendar createdOn; 

    @JsonProperty 
    public String name; 
} 

같은 간단한 엔티티 클래스를 감안할 때? 그렇지 않다면 미래에 이런 일이 가능할 것입니까?

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

    @JsonProperty 
    public String name; 
} 

나는 custom deserialize the entire entity이 될 수 있습니다. 예를 들어 사용자 지정 구문을 특정 날짜 형식으로 사용하거나 사용자 지정 엔터티에 값 배열을 읽는 등 한 번에 한 필드 씩 비 직렬화를 사용자 지정하여 Jackson을 허용하는 방법이 있다면 궁금합니다. 나머지 엔티티는 정상적으로 비 직렬화됩니다.

답변

2

는 사용자 정의 @JsonSerialize를 사용하여 특정 필드를 직렬화 정의 할 수 있습니다

@JsonSerialize(using=MuCustomCalendarConverter.class) 
+0

감사합니다! (미안 해요. 문서에서 이것을 놓쳤습니다 ... http://wiki.fasterxml.com/JacksonHowToCustomDeserializers를 보았습니다.) – jandersen

+0

흠 ... 나는 이것을 사용하기 위해 ObjectMapper와 관련된 특별한 것이 있습니까? DateDeserializer를 확장하고 java.util.Date 유형의 내 속성에 적용한 클래스를 만들었으며 생성자에 중단 점을 만들었습니다. deserialization 할 때 중단 점을 결코 적중 및 deserialization 오류가 발생합니다 (이유는 deserialization 사용자 지정하려는 ...) 어떤 아이디어? – jandersen

+1

글쎄, 나는'FromStringDeserializer '에서 확장하는 것으로 끝났고 그 트릭을했다 ...하지만 GAE에도 배포하고 있으며 클린/리빌드 할 때까지 사용자 정의 시리얼 라이저를 추가하는 것과 같은 문제가있는 것처럼 보였다. 내 프로젝트에서 잭슨과는 아무런 관련이 없을 것입니다. – jandersen

관련 문제