java json jackson cycle bidirectional-relation

jtextfield en java netbeans



Jackson-serialización de entidades con relaciones birecionales(evitando ciclos) (2)

Tengo dos entidades:

Parent { Child[] children; } and Child { Parent parent; }

@JsonBackReference y @JsonManagedReference . Son buenos, si estoy serializando instancias de Parent .

Pero también necesito transferir instancias de Child y quiero que se parent campo parent .

En otras palabras:

  1. En la serialización de Parent debe tener children pero su campo principal puede estar vacío (se puede resolver usando las anotaciones de referencia json).
  2. En la serialización de Child , debe tener parent con sus children (pero no es necesario que los parent tengan children .

¿Hay alguna manera de resolverlo usando las capacidades estándar de Jackson?

Es decir, omita la serialización de entidades que ya fueron serializadas en lugar de marcar los campos elegibles o no elegibles para la serialización.


Jackson 2.0 admite referencias completas de objetos cíclicos. Consulte " Jackson 2.0 liberado " (sección "Maneje cualquier gráfico de objetos, ¡incluso los cíclicos!") Para ver un ejemplo.

Básicamente, deberá usar la nueva @JsonIdentityInfo para los tipos que requieren el manejo del estilo id / idref. En su caso, esto sería tanto Child tipos Parent como para Child (si uno amplía el otro, simplemente agréguelo al tipo super y eso está bien).


implementación de interfaz muy útil se proporciona en la biblioteca de jackson 2 como

@Entity @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id") public class Parent { .... @Entity @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id") public class Child { ....

en maven

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.0.2</version> </dependency>

@StaxMan proporcionó un buen enlace para comenzar desde