Posible configurar Jackson JSON Mapper para excluir las propiedades sobre la base de qué objeto se serializar?

StackOverflow https://stackoverflow.com/questions/2507768

  •  22-09-2019
  •  | 
  •  

Pregunta

Decir que tengo objetos tales como un negocio con una lista de objetos de dirección, y una orden que tiene un negocio.

¿Es posible configurar, de modo que cuando la orden es de serie que excluye de la lista de direcciones del objeto de negocio, y cuando se serializa el negocio que incluye la lista?

Estoy usando ajax a los datos de atracción para un RIA y cuando se trabaja con la Orden que realmente no se preocupan por los datos de dirección, pero cuando se trata de negocios sí quiero la lista.

También estoy usando Hibernate para la persistencia así que esto es realmente una optimización de la eficiencia y el rendimiento.

¿Fue útil?

Solución

Si entiendo pregunta correctamente, sí, creo que JSON Vistas para Jackson permitiría esto. Es, básicamente, crear dos puntos de vista diferentes (perfiles) de mismo tipo, y elegir la que desee utilizar para la serialización.

Otros consejos

Se podría utilizar el JsonIgnore anotación ignorar el Dirección en la serialización y apague el uso de anotaciones en el ObjectMapper 's SerializationConfig al serializar un Empresas . Por supuesto, esto significa que otras anotaciones que podría utilizar son ignorados también. No es perfecto, pero es posible encontrar una solución mejor mirar en esto, creo que sirve (obviamente).

ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().disable(Feature.USE_ANNOTATIONS);

Sí, puede hacerlo. Todo lo que necesita es declarar la lista de direcciones como propiedad transitoria en su objeto del negocio.

A continuación, añadir el siguiente código a su jsonConfig:

jsonConfig.setIgnoreTransientFields(true);
@JsonIgnore 

se utiliza para ignorar propiedades que no desea convertir a JSON.

public class UserDocument {

    private long id;

    private String documentUrl;

    @JsonIgnore
    private byte documentType;

    //traditional getters and setters
}

Salida: Esto convertirá las propiedades id y documentUrl , pero no convertirá la propiedad Tipo de documento .

{
  "id": 5,
  "document_url": "/0/301115124948.jpg"
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top