我有Jackson mixin和继承的问题.我有两个目标类,父母和孩子.对于这两个目标类,我已经定义了两个没有继承关系的MixIn类(接口).我还测试了一个MixIn接口扩展了另一个,但结果没有差异.当Jackson序列化父类时,它使用正确定义的mixin进行序列化配置,一切运行良好.但是,当Jackson序列化子类时,它将使用父类mixin定义来序列化父类和子类中存在的属性.然后,它使用子类mixin定义来序列化子类中定义的属性,但不在父类中定义.现在这可能与比较杰克逊的基类或实现接口有关.
现在的问题是,在序列化子类的对象时,有什么方法可以指示Jackson只使用子类的mixin定义?是的,我想保留两个单独的用例的mixin定义,所以只删除父类mixin映射不会解决我的问题.
示例代码以及下面的预期和实际输出JSON.
环境:Jackson版本2.1.4 Tomcat版本7.0.34.0
他们实现的目标类和接口:
public interface TestI {
public String getName();
}
public interface TestExtendI extends TestI {
public Integer getAge();
}
public class Test implements TestI {
String name;
public Test(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
}
public class TestExtend extends Test implements TestExtendI {
private Integer age;
public TestExtend(String name) {
super(name);
}
public TestExtend(String name, Integer age) {
super(name);
this.age = age;
}
@Override
public …Run Code Online (Sandbox Code Playgroud) jackson ×1