小编use*_*050的帖子

杰克逊混合选择和继承

我有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

5
推荐指数
1
解决办法
5222
查看次数

标签 统计

jackson ×1