2010-03-24 5 views
7

Disons que j'ai des objets tels qu'une entreprise avec des objets de liste d'adresses et un ordre qui a une entreprise.Possibilité de configurer Jackson-Json Mapper pour exclure les propriétés en fonction de l'objet en cours de sérialisation?

Est-il possible de configurer de sorte que lorsque l'ordre est sérialisé, il exclut la liste des adresses de l'objet métier, et lorsque l'entreprise est sérialisée, il inclut la liste? J'utilise ajax pour extraire des données pour un RIA et quand je travaille avec l'ordre je ne me soucie pas vraiment des données d'adresse, mais quand je traite avec des affaires je veux la liste. J'utilise également Hibernate pour la persistance, donc c'est vraiment une optimisation de l'efficacité et de la performance.

Répondre

8

Si je comprends bien la question, oui, je pense que JSON Views Jackson permettrait. Vous créez essentiellement deux vues différentes (profils) pour le même type et choisissez celle à utiliser pour la sérialisation.

5

Vous pouvez utiliser le JsonIgnore Annotation d'ignorer la Adresse liste sérialisation et désactiver l'utilisation des annotations dans le d » SerializationConfigObjectMapper lors de la sérialisation d'un d'affaires. Bien sûr, cela signifie que les autres annotations que vous pourriez utiliser sont également ignorées. Pas parfait, mais vous trouverez peut-être une meilleure solution en espérant que ça aide (évidemment).

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

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

Ensuite, ajoutez le code suivant à votre jsonConfig:

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

Ceci ne répond pas à OP qui demande précisément si l'exclusion de champs peut être activée ou désactivée. –

Questions connexes