我有以下设置:
public interface I{ public String getIprop();}
class A implements I{
public String a = "a";
public String getIprop(){return "i";}
class B implements I{
public String b = "b";
public String getIprop(){return "i";}
List<I> myObjects = new List<I>();
myObjects.add(new A());
myObjects.add(new B());
myObjets应作为http响应传回。 (串行化) 使用Jackson 1.x,一切都很好:序列化的返回String有A和B两个对象,尽管我只序列化了它们的接口。第一个对象包含a成员和i成员。第二个Object包含b成员和i成员。
现在,使用jackson 2.x,序列化只包含我的对象的接口:两个对象都只包含i成员。
可以解释这种行为吗?我如何通过杰克逊2获得旧的行为?
答案 0 :(得分:0)
我不知道它是如何在jackson 1.x中,但对于jackson 2.x你必须在mapper中添加类型解析器,类似于:
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
或在课堂上,如:
@JsonTypeInfo
(
use = JsonTypeInfo.Id.CLASS,
include = JsonTypeInfo.As.PROPERTY
)
public interface I{ public String getIprop();}