MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Serializza una classe in due modi diversi con Jackson

Dall'esame delle opzioni, sembra che tu possa annotare le proprietà da mostrare solo se un determinato View viene passato a ObjectMapper utilizzato per la serializzazione. Potresti quindi modificare la classe:

public static class FooReference {
    public DBRef<Foo> foo;

    @JsonView(Views.WebView.class)
    public Foo getFoo() {
        return foo.fetch();
    }
}

e fornisci:

class Views {
    static class WebView { }
}

e quindi serializzare dopo aver creato una configurazione con la visualizzazione corretta:

SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
objectMapper.setSerializationConfig(conf);

Che poi lo serializzerebbe. Non specificare la vista durante la serializzazione con il wrapper MongoDB significherebbe che il metodo verrebbe ignorato. Le proprietà senza un'annotazione JsonView sono serializzate per impostazione predefinita, un comportamento che puoi modificare specificando:

objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);

Maggiori informazioni sono disponibili su Jackson Wiki.

Ci sono anche altre alternative, si scopre:ci sono Jackson MixIns che ti permetterebbero di ignorare il comportamento di (de)serializzazione di parti di una classe senza modificare la classe stessa, e da Jackson 2.0 (versione molto recente) ci sono filtri , anche.