Java 클래스를 deserialize하려고 할 때 몇 가지 문제가 있습니다. 내 클래스는 다음과 같습니다Jackson JSON 및 JAVA를 사용하여 다형성 LinkedList를 deserialize하는 방법은 무엇입니까?
Abstract Class A {
Long ID
String name
...
}
Class B extends A{
String Type
String Value
}
Class C extends A{
List<A> typedList;
}
그리고 내 직렬화/Deseralization 방법 :
public String serialize(T object) {
String returnValue = "";
try {
returnValue = mapper.writeValueAsString(object);
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(returnValue);
return returnValue;
}
public List<T> unserialize(String data, Class<?> clazz) {
List<T> returnValue = new LinkedList<T>();
//JavaType topMost = mapper.getTypeFactory().constructParametricType(MyWrapper.class, ActualClassRuntime.class);
try {
returnValue = (List<T>) mapper.readValue(data,clazz);
} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return returnValue;
}
는 C 클래스 내부의 목록 B와 C 요소가 포함되어 있습니다. 직렬화는 문제없이 수행되지만 C를 비 직렬화하려고하면 Jackson은 내 typedList를 올바르게 다시 작성할 수 없습니다. LinkedList 대신 LinkedHashMap을 사용하므로 올바른 유형을 사용하지 마십시오. 이 문제를 해결하는 방법은 무엇입니까? 미리 감사드립니다.
@alfasin 이건 PHP와 아무런 관련이 없습니다 – NimChimpsky