由于某种原因,JsonIdentityInfo会序列化一个孩子的深度,而不会序列化另一个孩子的深度。我的例子:
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "id")
class A {
private long id;
private B last;
// Getters, setters...
}
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "id")
class B {
private long id;
private A a;
private C c1;
private C c2;
// Getters, setters...
}
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "id")
class C {
private long id;
private Set<A> as;
private B last;
// Getters, setters...
}
我将对象
B
序列化,将子A a
序列化到某个深度,将C c1
序列化到几个级别。但是C c2
仅获得引用。我希望
A a; C c1; C c2;
仅序列化到第一个深度,或者还包括c2
,无论深度如何。 最佳答案
只需在类@JsonUnwrapped
中的属性c1
和c2
上使用B
批注。即
@JsonIdentityInfo(generator =
ObjectIdGenerators.IntSequenceGenerator.class, property = "id")
class B {
private long id;
private A a;
@JsonUnwrapped
private C c1;
@JsonUnwrapped
private C c2;
// Getters, setters...
}