커다란 클래스 세트 (100 개가 넘는 클래스)가 있으며, 모두 추상적 클래스에서 확장되었습니다. ParentClass
이라고합시다. 자식 클래스 ChildA
, ChildB
등을 호출하겠습니다. 모든 자식에 대해 사용자 정의 직 병렬 변환기를 등록하고 클래스 해제 형식으로 클래스를 가져 오려면 어떻게해야합니까?클래스를 추상화하는 Jackson 커스텀 데시리아 화 모듈
module.addDeserializer(ParentClass.class, new MyObjectDeserializer());
을했지만 작동하지 않습니다 나는 시도했다.
나는 (작동하고 어떤) 일을 건너 뛰려면 :
module.addDeserializer(ChildA.class, new MyObjectDeserializer(ChildA.class));
module.addDeserializer(ChildB.class, new MyObjectDeserializer(ChildB.class));
module.addDeserializer(ChildC.class, new MyObjectDeserializer(ChildC.class));
//etc......
클래스 유형이이 클래스 이름을 정의 된 것을, 나는 스프링 @RequestBody 방법에 대해 잭슨을 사용할 생각으로 알려진되어야한다. 어떻게 할 수 있습니까?
동일한 상위 디시리얼라이저를 사용하는 경우 해당 하위 클래스를 모두 등록해야합니까? 어쩌면 컨트롤러 함수를 정의하여 Parent 클래스를 받고 다른 방법으로 자식 클래스를 구분해야합니다. – hofan41
좋은 해결책은 아닙니다. 직접 클래스를 다루는 것이 훨씬 쉽습니다. 오히려 직접 클래스를 추상 클래스와 구별 할 수있는 메커니즘을 만드는 것입니다. (게다가, 우리는 구체적인 클래스에서 많은 코드를 가지고 있습니다). – Tom
나는 이것을 잭슨의 버그라고 생각한다. 나는 문제를 제기했다 : https://github.com/FasterXML/jackson-databind/issues/1784 –