writevalueasstring serialize parse deserialize java json serialization jackson

java - serialize - objectmapper writevalueasstring



Cómo serializar solo la identificación de un niño con Jackson (1)

¿Existe una forma incorporada de serializar solo la identificación de un niño cuando se usa Jackson (fasterxml.jackson 2.1.1)? Queremos enviar un Order través de REST que tiene una referencia de Person . Sin embargo, el objeto persona es bastante complejo y podríamos actualizarlo en el lado del servidor, por lo que todo lo que necesitamos es la clave principal.

¿O necesito un serializador personalizado para esto? ¿O necesito @JsonIgnore todas las demás propiedades? ¿Eso evitaría que los datos de la Person se envíen de vuelta al solicitar un objeto de Order ? Todavía no estoy seguro de si lo necesitaré, pero me gustaría tener el control si es posible ...


Hay dos formas. El primero es usar @JsonIgnoreProperties para eliminar propiedades de un niño, de esta manera:

public class Parent { @JsonIgnoreProperties({"name", "description" }) // leave "id" and whatever child has public Child child; // or use for getter or setter }

otra posibilidad, si el objeto Child siempre se serializa como id:

public class Child { // use value of this property _instead_ of object @JsonValue public int id; }

y un enfoque más es usar @JsonIdentityInfo

public class Parent { @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id") @JsonIdentityReference(alwaysAsId=true) // otherwise first ref as POJO, others as id public Child child; // or use for getter or setter // if using ''PropertyGenerator'', need to have id as property -- not the only choice public int id; }

que también funcionaría para la serialización e ignoraría otras propiedades que no fueran id. Sin embargo, el resultado no se envolverá como Objeto.