序列化时忽略字段

时间:2018-07-08 02:01:54

标签: jackson

如果我有两个有关系的班级:

class A {
  long id;
  B b;
}

class B {
  long id;
  int property;
}

我的问题是:序列化A时,我希望仅获取b的ID,而不是整个b对象。但是,我不希望这影响B本身的序列化。换句话说,当序列化类B的实例时,结果应同时包含id和property。

您知道杰克逊如何做到这一点吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用@JsonIgnoreProperties。注释通常在类级别使用,但它也适用于属性。当应用于属性时,它用于忽略带注释的属性内的属性。 。 这是我的测试课

public static void main(String[] args)
{
    ObjectMapper mapper = new ObjectMapper();

    B b = new B();
    b.id = 2L;
    b.property = 3;
    A a = new A();
    a.id = 1L;
    a.b = b;

    try {
        System.out.println("B:");
        System.out.println( mapper.writeValueAsString(b));
        System.out.println("A:");
        System.out.println( mapper.writeValueAsString(a));
    } catch (IOException e) {
        e.printStackTrace();
    }


}

public static class A {
    public long id;
    @JsonIgnoreProperties("property")
    public B b;
}

public static class B {
    public long id;
    public int property;
}

输出:

B:
{"id":2,"property":3}
A:
{"id":1,"b":{"id":2}}