sql >> Database >  >> NoSQL >> MongoDB

Serialiseer een klas op twee verschillende manieren met Jackson

Als je naar opties kijkt, lijkt het erop dat je eigenschappen kunt annoteren zodat ze alleen worden weergegeven als een gegeven View wordt doorgegeven aan de ObjectMapper gebruikt voor serialisatie. Je zou de klas dus kunnen bewerken:

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

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

en geef:

class Views {
    static class WebView { }
}

en vervolgens serialiseren na het maken van een configuratie met de juiste weergave:

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

Die het dan zou serialiseren. Het niet specificeren van de weergave bij het serialiseren met de MongoDB-wrapper zou betekenen dat de methode zou worden genegeerd. Eigenschappen zonder JsonView-annotatie zijn standaard geserialiseerd, een gedrag dat u kunt wijzigen door op te geven:

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

Meer informatie is beschikbaar op de Jackson Wiki.

Er zijn ook nog andere alternatieven, zo blijkt:er zijn Jackson MixIns waarmee je het (de)serialisatiegedrag van delen van een klasse kunt overschrijven zonder de klasse zelf aan te passen, en vanaf Jackson 2.0 (zeer recente release) zijn er filters , ook.



  1. Tijdelijke fout in herdistributie van naam

  2. HBase Performance-testen met YCSB

  3. Hoe plaats je een afbeeldingsbestand in een json-object?

  4. Maak een database in MongoDB