【发布时间】:2012-02-28 18:17:10
【问题描述】:
我在尝试反序列化 Java 类时遇到了一些问题。 我的课程是:
Abstract Class A {
Long ID
String name
...
}
Class B extends A{
String Type
String Value
}
Class C extends A{
List<A> typedList;
}
还有我的序列化/反序列化方法:
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。 它使用 LinkedHashMap 而不是 LinkedList 并且不使用正确的类型。 任何想法如何解决这个问题? 提前致谢!
【问题讨论】:
-
@alfasin 这与php无关
标签: java json polymorphism jackson deserialization