serializar - libreria json para java
¿Es posible configurar Jackson-Json Mapper para excluir propiedades en función de qué objeto está serializando? (4)
Supongamos que tengo objetos, como un negocio con una lista de objetos de dirección y un pedido que tiene un negocio.
¿Es posible configurar de modo que cuando la orden se serialice excluya la lista de direcciones del objeto comercial y cuando la empresa se serialice incluya la lista?
Estoy usando ajax para extraer datos para un RIA y cuando trabajo con el Orden, realmente no me importan los datos de dirección, pero cuando trato con Negocios, sí quiero la lista.
También estoy usando Hibernate para la persistencia, así que esto es realmente una optimización de rendimiento y eficiencia.
Puede utilizar la Anotación de JsonIgnore para ignorar la lista de direcciones en la serialización y desactivar el uso de anotaciones en SerializationConfig de ObjectMapper al serializar un Negocio . Por supuesto, esto significa que otras anotaciones que podrías usar son ignoradas también. No es perfecto, pero podría encontrar una mejor solución para investigar esto, espero que ayude (obviamente).
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().disable(Feature.USE_ANNOTATIONS);
Si entiendo la pregunta correctamente, sí, creo que JSON Views for Jackson permitiría esto. Básicamente, crearía dos vistas (perfiles) diferentes para el mismo tipo, y elegiría cuál usar para la serialización.
Si, puedes hacerlo. Todo lo que necesita es declarar la Lista de direcciones como propiedad transitoria en su objeto comercial.
A continuación, agregue el siguiente código a su jsonConfig:
jsonConfig.setIgnoreTransientFields(true);
@JsonIgnore
se usa para ignorar las 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 documentType .
{
"id": 5,
"document_url": "/0/301115124948.jpg"
}