sql >> Databáze >  >> NoSQL >> MongoDB

Serializujte jednu třídu dvěma různými způsoby s Jacksonem

Z pohledu na možnosti se zdá, že můžete anotovat vlastnosti, aby se zobrazily pouze v případě, že daný View je předán ObjectMapper používá se pro serializaci. Můžete tedy třídu upravit:

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

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

a poskytnout:

class Views {
    static class WebView { }
}

a poté serializovat po vytvoření konfigurace se správným zobrazením:

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

Což by to pak serializovalo. Neuvedení pohledu při serializaci s obalem MongoDB by znamenalo, že metoda bude ignorována. Vlastnosti bez anotace JsonView jsou standardně serializovány, toto chování můžete změnit zadáním:

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

Více informací je k dispozici na Jackson Wiki.

Existují ještě další alternativy, jak se ukázalo:existují Jackson MixIns, které vám umožní přepsat (de)serializační chování částí třídy bez úpravy samotné třídy, a od Jackson 2.0 (velmi nedávné vydání) existují filtry .



  1. Rails 3:jak používat aktivní záznam a mongoid zároveň

  2. Mongoose findOneAndUpdate a runValidators nefungují

  3. Maskování PII v MongoDB, Cassandře a Elasticsearch pomocí DarkShield:…

  4. Upozornění na ukončení podpory MongoDB mongoose