我已通过在基类中添加注释来启用多形态序列化支持。我能够成功地对一个单独的对象进行序列化,并且将类型信息作为序列化数据的一部分写入。但是,如果我将对象存储在列表中并将其序列化,则不会发生同样的情况。多形阵列失败的序列化
看来这个问题是固定在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