Possibilité de configurer Jackson-Json Mapper pour exclure les propriétés en fonction de quel objet il est sérialisation?

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

  •  22-09-2019
  •  | 
  •  

Question

Dire que j'ai des objets comme une entreprise avec une liste d'objets d'adresses, et une ordonnance qui a une entreprise.

Est-il possible de configurer de sorte que lorsque l'ordre est sérialisé exclut la liste des adresses de l'objet Business, et lorsque l'entreprise est sérialisé il comprend la liste?

J'utilise ajax pour extraire des données pour un RIA et lorsque vous travaillez avec l'ordre que je ne me soucie pas vraiment sur les données d'adresse, mais lorsqu'ils traitent avec les entreprises que je ne veux la liste.

J'utilise aussi Hibernate pour la persistance si cela est vraiment une optimisation de l'efficacité et de la performance.

Était-ce utile?

La solution

Si je comprends bien la question, oui, je pense que JSON Vues pour Jackson permettrait. Vous essentiellement créer deux points de vue différents (profils) pour un même type, et choisir celui à utiliser pour la sérialisation.

Autres conseils

Vous pouvez utiliser le JsonIgnore Annotation ignorer Adresse sérialisation et désactiver l'utilisation des annotations dans la ObjectMapper s SerializationConfig lors de la sérialisation Business . Bien sûr, cela signifie que d'autres annotations que vous pouvez utiliser sont ignorés aussi bien. Pas parfait, mais vous pouvez trouver une meilleure solution à la recherche dans ce, elle pourra être utile (évidemment).

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

Oui, vous pouvez le faire. Tout ce que vous avez besoin est de déclarer la liste d'adresse en tant que propriété transitoire vous objet métier.

Ensuite, ajoutez le code suivant à votre jsonConfig:

jsonConfig.setIgnoreTransientFields(true);
@JsonIgnore 

est utilisé pour ignorer les propriétés que vous ne voulez pas convertir en JSON.

public class UserDocument {

    private long id;

    private String documentUrl;

    @JsonIgnore
    private byte documentType;

    //traditional getters and setters
}

Sortie: Cela va convertir les propriétés id et DocumentUrl mais ne convertit pas la propriété documentType .

{
  "id": 5,
  "document_url": "/0/301115124948.jpg"
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top