Java 序列化多态对象列表时未设置类型Id字段
考虑一下我编写的这段代码,它利用了Jackson对多态序列化/反序列化的支持()-Java 序列化多态对象列表时未设置类型Id字段,java,json,serialization,jackson,Java,Json,Serialization,Jackson,考虑一下我编写的这段代码,它利用了Jackson对多态序列化/反序列化的支持()- 我的问题是——当我序列化列表时,生成的json中不包含类型字段。但是,如果改用Animal[],则生成的json中会包含一个类型字段。在这两种情况下,反序列化都可以正常工作,即使用正确的子类。有人能解释这种行为的原因吗?要使用多态序列化来序列化泛型集合,您需要执行以下操作: mapper.writerFor(new TypeReference<List<Animal>>() {}).wri
我的问题是——当我序列化列表时,生成的json中不包含类型字段。但是,如果改用Animal[],则生成的json中会包含一个类型字段。在这两种情况下,反序列化都可以正常工作,即使用正确的子类。有人能解释这种行为的原因吗?要使用多态序列化来序列化泛型集合,您需要执行以下操作:
mapper.writerFor(new TypeReference<List<Animal>>() {}).writeValueAsString(unmarshalledList));
mapper.writer(新类型引用
Dog
Cat
[ {
"name" : "cookie",
"barkLevel" : 5
}, {
"name" : "misty",
"meowLevel" : 3
} ]
Dog
Cat
[ {
"type" : "dog",
"name" : "cookie",
"barkLevel" : 5
}, {
"type" : "cat",
"name" : "misty",
"meowLevel" : 3
} ]
mapper.writerFor(new TypeReference<List<Animal>>() {}).writeValueAsString(unmarshalledList));