For some reason JsonIdentityInfo serialises the depth of one child but not the other. My example:
@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...
}
I serialise object B
it serialises child A a
to some depth, serialises C c1
to few levels deep. But C c2
only gets the reference.
I want A a; C c1; C c2;
serialised only to first depth or also include c2
regardless of depth.
Just use @JsonUnwrapped
annotation on the property c1
and c2
in class B
. i.e.
@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...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With