Possibilità di configurare Jackson-JSON Mapper di escludere le proprietà in base a quale oggetto si tratta di serializzazione?

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

  •  22-09-2019
  •  | 
  •  

Domanda

Dire che ho oggetti come un business con un elenco di oggetti di indirizzo, e un Ordine che ha un business.

E 'possibile configurare in modo che quando l'Ordine è serializzato esclude l'elenco degli indirizzi dall'oggetto business, e quando il business è serializzato 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.

È stato utile?

Soluzione

Se ho capito bene domanda, sì, penso JSON Visualizzazioni per Jackson permetterebbe questo. Si potrebbe fondamentalmente creare due diversi punti di vista (profili) per lo stesso tipo e scegliere quale usare per la serializzazione.

Altri suggerimenti

È possibile utilizzare il JsonIgnore annotazione di ignorare il Indirizzo in serializzazione e spegnere l'uso di annotazioni nel ObjectMapper 's SerializationConfig durante la serializzazione di un Affari . Naturalmente, questo significa che altre annotazioni si potrebbe utilizzare vengono ignorate pure. Non perfetto, ma si potrebbe trovare una soluzione più bello in questo, spero che aiuta (ovviamente).

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

Sì, è possibile farlo. Tutto ciò che serve è quello di dichiarare la lista dei Indirizzo come proprietà transitoria in te oggetto di business.

Quindi aggiungere il seguente codice al jsonConfig:

jsonConfig.setIgnoreTransientFields(true);
@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
}

Output: questo permette di convertire le proprietà di id e DocumentUrl , ma non converte proprietà DocumentType .

{
  "id": 5,
  "document_url": "/0/301115124948.jpg"
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top