MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Сериализирайте един клас по два различни начина с Джаксън

От разглеждането на опциите изглежда, че можете да коментирате свойствата, за да се показват само ако даден View се предава на ObjectMapper използва се за сериализация. По този начин можете да редактирате класа:

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

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

и предоставят:

class Views {
    static class WebView { }
}

и след това сериализирайте след създаване на конфигурация с правилния изглед:

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

Което след това ще го сериализира. Ако не посочите изгледа при сериализиране с обвивката на MongoDB, би означавало, че методът ще бъде игнориран. Свойствата без анотация на JsonView се сериализират по подразбиране, поведение, което можете да промените, като посочите:

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

Повече информация можете да намерите в Jackson Wiki.

Оказва се, че има и други алтернативи:има Jackson MixIns, които биха ви позволили да отмените поведението на (де)сериализация на части от клас, без да променяте самия клас, а от Jackson 2.0 (много скорошна версия) има филтри също.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. C# + MongoDB - ObjectId без използване на MongoDB DataTypes/Attributes

  2. Как да направя заявка за агрегиране на Mongo в Spring Data?

  3. Заявка на Mongodb въз основа на елемент на конкретна позиция в масива

  4. Неуспешно свързване на Mongoose с Atlas

  5. 4 начина за изтриване на документ в MongoDB