2017-08-22 3 views
1

Gibt es eine Möglichkeit zu definieren, welche JsonView standardmäßig beim Serialisieren eines Objekts verwendet wird?Jackson Standard JsonView für Serialisierung

Ich habe drei Ansichten, DefaultView, UserView und AdminView. Im Moment, wenn ich keine spezielle Ansicht für die Verwendung festlege, werden alle Felder aus den Ansichten Default, User und Admin angezeigt.

Ich möchte es nur Felder von DefaultView enthalten, es sei denn, ich markiere meinen Ruheendpunkt ausdrücklich mit @JsonView (UserView.class/AdminView.class).

Antwort

0

Der Blick für die Serialisierung verwendet wird, kann mit dem folgenden Code festgelegt werden:

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

I Default Entfernen endete. Alle Felder, die zu einer spezialisierten Ansicht gehörten, habe ich weiterhin mit @JsonView (UserView.class/AdminView.class) kommentiert. Alle Felder, die ich nie serialisiert haben wollte, markierte ich als @JsonIgnore.

ich verwendet, um die folgenden ObjectMapper Config meine gewünschten Ergebnisse zu erhalten:

@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; 
    } 
} 
Verwandte Themen