Настроить объектный маппер внутри Custom serializer Джексона?

2

У меня есть 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???

Теги:
serialization
jackson
objectmapper

1 ответ

6
Лучший ответ

Получение ObjectMapper

Изнутри обычая JsonSerializer, вы можете получить ObjectMapper с помощью:

ObjectMapper mapper = ((ObjectMapper) jgen.getCodec());

Установка ObjectMapper

Вы также можете определить новый ObjectMapper в своем пользовательском JsonSerializer используя:

ObjectMapper mapper = new ObjectMapper();
jgen.setCodec(mapper);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню