У меня есть CustomSerializer для конкретного написанного поля. Я вызываю пользовательский сериализатор на ObjectMapper
с определенными конфигурациями, такими как WRAP_ROOT_VALUE
, PropertyNameStrategy
, Inclusion.NON_NULL
.
Теперь в моем пользовательском сериализаторе я хочу все эти свойства при сериализации моего пользовательского класса, кроме одного (WRAP_ROOT_VALUE
).
public class CustomSerializer extends JsonSerializer<Object>{
@Override
public void serialize(Object obj, JsonGenerator jgen,
SerializerProvider arg2) throws IOException,
JsonProcessingException {
//.......
jgen.writeObject(obj);
//...
}
Поэтому мой obj
здесь сериализуется с корневым значением, которое мне не нужно.
По какой-то причине я не могу редактировать POJO.
Как отключить только одно (или некоторое) свойство Objectmapper
внутри CustomSerializer???
ObjectMapper
Изнутри обычая JsonSerializer
, вы можете получить ObjectMapper
с помощью:
ObjectMapper mapper = ((ObjectMapper) jgen.getCodec());
ObjectMapper
Вы также можете определить новый ObjectMapper
в своем пользовательском JsonSerializer
используя:
ObjectMapper mapper = new ObjectMapper();
jgen.setCodec(mapper);