如果我有两个有关系的班级:
class A {
long id;
B b;
}
class B {
long id;
int property;
}
我的问题是:序列化A时,我希望仅获取b的ID,而不是整个b对象。但是,我不希望这影响B本身的序列化。换句话说,当序列化类B的实例时,结果应同时包含id和property。
您知道杰克逊如何做到这一点吗?谢谢!
答案 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}}