MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Serializuj jedną klasę na dwa różne sposoby z Jacksonem

Patrząc na opcje, wydaje się, że możesz dodawać adnotacje do właściwości, które będą pokazywane tylko wtedy, gdy dany View jest przekazywany do ObjectMapper używany do serializacji. Możesz w ten sposób edytować klasę:

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

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

i podaj:

class Views {
    static class WebView { }
}

a następnie serializuj po utworzeniu konfiguracji z poprawnym widokiem:

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

Który następnie serializowałby to. Nieokreślenie widoku podczas serializacji z opakowaniem MongoDB oznaczałoby, że metoda zostanie zignorowana. Właściwości bez adnotacji JsonView są domyślnie serializowane, co można zmienić, określając:

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

Więcej informacji jest dostępnych na Jackson Wiki.

Okazuje się, że są jeszcze inne alternatywy:istnieją Jackson MixIns, które pozwalają nadpisać zachowanie (de)serializacji części klasy bez modyfikowania samej klasy, a od Jackson 2.0 (bardzo niedawna wersja) są filtry .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Co to jest pole __v w Mongoose?

  2. Różnica między Find i FindAsync

  3. MongoDb C# GeoNear Query Construction

  4. MongoDB Specyfikatory formatu $dateFromString

  5. MongoDB:Pobierasz tylko dokumenty utworzone w ciągu ostatnich 24 godzin?