sql >> Databasteknik >  >> NoSQL >> MongoDB

Serialisera en klass på två olika sätt med Jackson

När du tittar på alternativen verkar det som att du kan kommentera egenskaper som endast ska visas om en given View skickas till ObjectMapper används för serialisering. Du kan alltså redigera klassen:

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

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

och tillhandahåll:

class Views {
    static class WebView { }
}

och serialisera sedan efter att ha skapat en konfiguration med rätt vy:

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

Som sedan skulle serialisera det. Att inte specificera vyn vid serialisering med MongoDB-omslaget skulle innebära att metoden skulle ignoreras. Egenskaper utan en JsonView-anteckning serialiseras som standard, ett beteende som du kan ändra genom att ange:

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

Mer information finns på Jackson Wiki.

Det finns fortfarande andra alternativ också, visar det sig:det finns Jackson MixIns som låter dig åsidosätta (av)serialiseringsbeteende för delar av en klass utan att modifiera själva klassen, och från och med Jackson 2.0 (mycket ny version) finns det filter också.



  1. Hur kan jag lova MongoDBs inbyggda Javascript-drivrutin med bluebird?

  2. mongodb misslyckades:fel vid anslutning till db-server:inga servrar som kan nås

  3. Hur kopierar jag en databas från en MongoDB-server till en annan?

  4. Redis:fan ut nyhetsflöden i lista eller sorterad uppsättning?