2017-02-21 6 views
1

전으로 주석 필드 모델을했습니다 :잭슨 JsonMappingException : 유효하지 않은 유형 ID

@JsonTypeInfo(use = CLASS) 
private Object dudClass; 

나는이 객체를 역 직렬화 할 내가 클래스 경로에이 dudClass 인스턴스가 없을 때 가장 큰 문제는 I

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Invalid type id 'pl.erbel.DudClass' (for id type 'Id.class'): no such class found. 

이 예외를 무시하는 쉬운 방법이 있습니까? 나는 다른 모듈에서 이것을 필요로 직렬화/역 직렬화를 무시하고 싶지 않아. 클래스 패스에 DudClass가 있고 클래스가 없으면 두 개의 클라이언트가 있습니다.

+2

@JsonIgnore를 사용해 보셨나요? – Coder

+0

일시적으로 사용해보십시오. –

+0

JsonIgnore를 사용하는 경우 @Coder 해당 필드를 serialize/deserialize 할 수 없습니까? –

답변

1

완벽한 솔루션이 아닐 수도 있지만 해결 방법이 될 수 있습니다. POJO에 dudClass이있는 대신 JsonAnyGetterJsonAnySetter을 사용하여 추가 속성을 사용할 수 있습니다. 당신은 당신의 부모 클래스에서 dudClass를 제거해야하고이 무엇

@JsonIgnore 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

@JsonAnyGetter 
public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

@JsonAnySetter 
public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

가 직렬화 복원 대신이지도에 대한 응답에 따라 제공되는 모든 추가 객체를 설정 dudClass 매번 설정하는 중입니다 다음 코드를 포함 객체 이름을 키로 (당신의 경우에는 dudClass 임) 객체의 내용을 값으로 사용합니다. 지도에 dudClass 키가 있는지 여부 만 확인할 수 있습니다.

문제가 해결되지 않거나 설명이 필요한 경우 알려주세요.