2014-04-01 4 views
0

Jackson serializer에서 하위 객체를 직렬화하려고합니다.커스텀 시리얼 라이저 내부의 커스텀 직렬화?

그래서 나는이 같은 목적을 가지고 :

public class StateSerializer extends JsonSerializer<State> { 

@Override 
public void serialize(State state, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { 
... 
jsonGenerator.writeObject(state.getDefinition()); 

그러나 내가 치울 :

@JsonSerialize(using = StateSerializer.class) 
public class State { 

    ... 

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
    @JsonProperty(value = "d", required = false) 
    @JsonInclude(JsonInclude.Include.NON_NULL) 
    @JsonSerialize(using = StateDefinitionSerializer.class) 
    private StateDefinition definition; 

    ... 
} 

내가 StateDefinitionSerializer라는 이름 자체 seriliazer를 사용하여 내 StateDefinition를 직렬화 할 내 StateSerializer 내부

잭슨 내 IOException DefaultSerializerProvider :

} catch (IOException ioe) { // As per [JACKSON-99], pass IOException and subtypes as-is 
     throw ioe; 
} 

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? :)

모든 도움/의견은 많이 감사 하였습니다.

행복을 빌며,

요헨

답변

0

당신은 NOT 클래스 위 (= 사용 StateSerializer.class)를 @JsonSerialize의 주석을 둘 필요가 있지만, 개체 또는 매개 변수 위는 직렬화합니다. 귀하의 경우에는

, 당신은 할 수 있습니다 :

@JsonSerialize(using = StateSerializer.class) 
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
... 
private StateDefinition definition; 
관련 문제