Как глобально применять @JsonIgnoreProperties (value = {"id"}) для всех классов приложений POJO (Jackson API) - PullRequest
0 голосов
/ 18 января 2019

У меня есть несколько классов, и для всех них я не хочу, чтобы поле id было частью моей выходной строки JSON (сериализация). Допустим, у меня есть 2 класса

@JsonIgnoreProperties(value = { "id" })
public final class Person {
 private ObjectId id;
  //........
}

@JsonIgnoreProperties(value = { "id" })
public final class Address{
 private ObjectId id;
  //........
}

Теперь я не хочу указывать @JsonIgnoreProperties(value = { "id" }) вручную для всех моих 1000 классов. Есть ли какой-нибудь глобальный способ сделать так, чтобы я мог применить эту часть для всех моих классов? Очень похоже на mapper.setSerializationInclusion(Include.NON_NULL) в методе ниже?

public String serialize(T dataObject) throws IOException {
        ObjectMapper mapper = new ObjectMapper();   
        mapper.setSerializationInclusion(Include.NON_NULL);
        String result = mapper.writeValueAsString(dataObject);
        return result;
}

Один из способов, которые я попробовал, - создать суперкласс и применить к нему @JsonIgnoreProperties (что работает). Но все же я должен писать «распространяется» в каждом дочернем классе, который я не предпочитаю. Есть ли способ применить этот параметр, не добавляя ничего дополнительного в мой класс pojo?

1 Ответ

0 голосов
/ 18 января 2019

Возможно, существует более эффективное решение, но вы можете переопределить маршаллер по умолчанию на тот, который исключает ненужные поля, но сохраняет все остальные.

...