0
Jackson에서 일반 객체를 직렬화하는 데 문제가 있습니다. 해결 방법을 찾았지만 원래 솔루션이 작동하지 않는 이유는 아직도 모르겠습니다. 여기 내 설정이다 :JsonMappingException 사용자 정의 직렬화 메소드로 일반 객체를 직렬화 할 때
@JsonValue
public int[] serialize(){
int[] array = new int[list.size()];
for (int i = 0; i < array.length; i++) {
BaseParamClass paramClass = list.get(i);
locationsArray[i] = paramClass.getInt();
}
return locationsArray;
}
을 그리고 여기서 일해야하는지,하지만하지 않습니다 :
@JsonValue
public int[] serialize(){
int[] array = new int[list.size()];
for (int i = 0; i < array.length; i++) {
ParamClass paramClass = list.get(i);
locationsArray[i] = paramClass.getInt();
}
return locationsArray;
}
을 여기
public class ClassA<P>{
protected final LinkedList<P> list;
public ClassA(LinkedList<P> list){
this.list = list;
}
}
@JsonValue
public class ClassB extends ClassA<ParamClass>{
public ClassB(LinkedList<ParamClass> list) {
super(list);
}
@JsonCreator
public ClassB(int[] array) {
this(getList(array));
}
public int[] serialize(){
...
}
}
public class ParamClass extends BaseParamClass{
public int getInt(){
...
}
}
작동 직렬화 방법에 대한 내 현재 코드입니다 두 번째 경우에는 예외가 발생합니다.
com.fasterxml.jackson.databind.JsonMappingException(packages.BaseParamClass cannot be cast to another.packages.ParamClass)
이 원인은 무엇입니까? ClassB의 형식 지정에서 보면 BaseParamClass가 아닌 ParamClass 만 목록에 사용할 수 있습니다. 내가 놓친 게 있니?
미안하지만 난 당신의 코드와 내 질문 사이의 관계를 볼 수 없습니다. 직렬화 중에는 예외가 발생하고 직렬화 중에는 예외가 발생하지 않습니다. 또한, ** 나는 다른 솔루션에 대해 알고 ** (내 질문에 작업 솔루션을 참조),하지만 내 첫 번째 솔루션이 작동하지 않는 이유를 알고 싶습니다. – Fido