Jackson - serialization of entities with birectional relationships (avoiding cycles)

bidirectional-relation, cycle, jackson, java, json

Solution

Jackson 2.0 does support full cyclic object references. See "Jackson 2.0 released" (section 'Handle Any Object Graphs, even Cyclic ones!') for an example.

Basically, you will need to use new `@JsonIdentityInfo` for types that require id/idref style handling. In your case this would be both `Parent` and `Child` types (if one extends the other, just add it to super type and that's fine).

Problem

I have two entities: ``` Parent { Child[] children; } and Child { Parent parent; } ``` I'm aware about `@JsonBackReference` and `@JsonManagedReference`. They are good, if I'm serializing instances of `Parent`. But I also need to transfer instances of `Child` and I want to have the `parent` field populated. In other words: - On serialization of `Parent` it should have `children` but their parent field might be empty (can be solved by using json reference annotations). - On serialization of `Child` it should have `parent` with their `children` (but `children` don't have to have `parent` populated. Is there a way to solve it using standard Jackson capabilities? I.e. skip serialization of entities which were already serialized instead of marking fields eligible or non-eligible for serialization.

Original source