2010-03-24 9 views
7

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 Jackson-Json Mapper para excluir propiedades en función de qué objeto está serializando?

¿Es posible configurar para 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 pedido no me importan realmente los datos de dirección, pero cuando trato con negocios, sí quiero la lista.

También estoy usando Hibernate para la persistencia, por lo que esto es realmente una eficiencia y optimización del rendimiento.

Respuesta

8

Si entiendo la pregunta correctamente, sí, creo que JSON Views para Jackson permitiría esto. Básicamente creará dos vistas diferentes (perfiles) para el mismo tipo, y elija cuál usar para la serialización.

5

podría utilizar el JsonIgnore Annotation ignorar la listaDirección de serialización y apagar el uso de anotaciones en el ObjectMapper 's SerializationConfig 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); 
0

Sí, puedes hacerlo. Todo lo que necesita es declarar la Lista de direcciones como propiedad transitoria en su objeto comercial.

continuación, agregue el siguiente código a su jsonConfig:

jsonConfig.setIgnoreTransientFields(true); 
-1
@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 Identificación y documentUrl pero no convertirá la propiedad DocumentType.

{ 
    "id": 5, 
    "document_url": "/0/301115124948.jpg" 
} 
+0

Esto no responde a OP que pregunta con precisión si la exclusión de campos puede estar activada y desactivada. –

Cuestiones relacionadas