2017-08-22 2 views
1

Y at-il un moyen de définir quel JsonView est utilisé par défaut lors de la sérialisation d'un objet?Jackson par défaut JsonView pour la sérialisation

J'ai trois vues, DefaultView, UserView et AdminView. En ce moment, si je ne définis pas spécifiquement une vue à utiliser, il inclura tous les champs des vues par défaut, utilisateur et administrateur. Je voudrais qu'il inclue uniquement les champs de DefaultView sauf si je marque explicitement mon point de repos avec @JsonView (UserView.class/AdminView.class).

Répondre

0

La vue utilisée pour la sérialisation peut être réglé avec le code suivant:

objectMapper.setConfig(objectMapper.getSerializationConfig().withView(DefaultView.class)); 

Je fini par enlever DefaultView. Tous les champs qui appartenaient à une vue spécialisée J'ai continué à annoter avec @JsonView (UserView.class/AdminView.class). Tous les champs que je n'ai jamais voulu numérotés je l'ai marqué comme @JsonIgnore.

J'utilisé la configuration ObjectMapper suivante pour obtenir mes résultats souhaités:

@Provider 
public class JacksonContextResolver implements ContextResolver<ObjectMapper> { 
    private final ObjectMapper objectMapper; 

    public JacksonContextResolver() { 
     objectMapper = new ObjectMapper(); 
     objectMapper.setConfig(objectMapper.getSerializationConfig().withView(Object.class)); 
     objectMapper.enable(MapperFeature.DEFAULT_VIEW_INCLUSION);    
    } 

    @Override 
    public ObjectMapper getContext(Class<?> arg0) { 
     return objectMapper; 
    } 
}