私はJavaクラスをデシリアライズしようとするといくつかの問題があります。 私のクラスは次のとおりです。Jackson JSONとJAVAを使用して多形LinkedListをデシリアライズする方法は?
Abstract Class A {
Long ID
String name
...
}
Class B extends A{
String Type
String Value
}
Class C extends A{
List<A> typedList;
}
そして、私のシリアル化/ Deseralization方法:Cクラスの内部
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;
}
リストは、BとCの要素が含まれています。シリアライゼーションは問題なく行われますが、Cを逆シリアル化しようとすると、JacksonはtypedListを正しく再構築できません。 LinkedListではなくLinkedHashMapを使用し、正しい型を使用しないでください。 この問題を解決する方法はありますか? ありがとうございます!
@alfasinこれはPHPとは関係ありません – NimChimpsky