我已通過在基類中添加註釋來啓用多形態序列化支持。我能夠成功地對一個單獨的對象進行序列化,並且將類型信息作爲序列化數據的一部分寫入。但是,如果我將對象存儲在列表中並將其序列化,則不會發生同樣的情況。多形陣列失敗的序列化
看來這個問題是固定在1.6.3(http://jira.codehaus.org/browse/JACKSON-362)
我使用傑克遜2.3.2,仍然面臨的問題。
有人知道如何解決這個問題嗎?
代碼:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY,property = "type")
@JsonSubTypes({@Type(value = Derived.class, name = "derived")})
public abstract class Base {
}
public class Derived extends Base {
private String field;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
}
public class Test {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
Derived d = new Derived();
d.setField("Name");
Base b = d;
System.out.println(mapper.writeValueAsString(b));
List<Base> list = new ArrayList<Base>();
list.add(d);
System.out.println(mapper.writeValueAsString(list));
}
}
輸出:
{ 「類型」: 「導出」, 「字段」: 「名稱」}
[{ 「字段」: 「名稱」}]
謝謝,
普利文
你當然可以進行序列化和反序列化多態與傑克遜對象的列表。你可以在你序列化/試圖反序列化這些對象的地方分享你的代碼嗎? – wdf 2015-02-06 16:07:57