2010-03-24 9 views
7

Dire che ho oggetti come un'azienda con un elenco di oggetti indirizzo e un ordine che ha un'attività.È possibile configurare Jackson-Json Mapper per escludere le proprietà in base a quale oggetto sta serializzando?

E 'possibile configurare in modo che quando l'Ordine è serializzato esclude l'elenco degli indirizzi dall'oggetto business, e quando il business è serializzato che include la lista?

sto usando Ajax per estrarre i dati per una RIA e quando si lavora con l'Ordine non mi preoccupo per i dati degli indirizzi, ma quando si tratta di business voglio la lista.

Inoltre sto usando Hibernate per la persistenza quindi questa è davvero un'ottimizzazione efficienza e prestazioni.

risposta

8

Se ho capito correttamente la domanda, sì, penso che JSON Views per Jackson permetterebbe questo. Fonderesti fondamentalmente due diverse viste (profili) per lo stesso tipo e scegli quale utilizzare per la serializzazione.

5

è possibile utilizzare il JsonIgnore Annotation di ignorare il Indirizzo lista in serializzazione e spegnere l'uso di annotazioni nella ObjectMapper s' SerializationConfig durante la serializzazione di un business . Ovviamente, questo significa che anche le altre annotazioni che potresti utilizzare vengono ignorate. Non perfetto, ma potresti trovare una soluzione migliore esaminando questo, spero che aiuti (ovviamente).

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

Sì, lo puoi fare. Tutto ciò che serve è dichiarare l'Elenco di indirizzi come proprietà temporanea nel proprio oggetto di business.

quindi aggiungere il seguente codice al jsonConfig:

jsonConfig.setIgnoreTransientFields(true); 
-1
@JsonIgnore 

viene utilizzato per ignorare le proprietà che non si desidera convertire in JSON.

public class UserDocument { 

    private long id; 

    private String documentUrl; 

    @JsonIgnore 
    private byte documentType; 

    //traditional getters and setters 
} 

uscita: Questo permette di convertire le proprietà id e DocumentUrl ma non converte proprietà DocumentType.

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

Questo non risponde all'OP che chiede esattamente se l'esclusione dei campi può essere attivata e disattivata. –

Problemi correlati