Я решил проблему, переопределив (де) сериализаторы.Для тех, кто заинтересован, вот как вы можете сделать это самостоятельно:
Шаг 1. Расширьте BeanSerializerFactory
.
Переопределить метод _constructWriter(SerializationConfig config, TypeBindings typeContext, PropertyBuilder pb, boolean staticTyping, String name, AnnotatedMember propertyMember)
.Внутри этого метода измените name
так, как считаете нужным.Для реализации оболочки Pascal я использовал эту строку: String formattedName = name.substring(0, 1).toUpperCase() + name.substring(1);
.После изменения name
вызовите super._constructWriter
.
Шаг 2. Расширьте BeanDeserializationFactory
.
Переопределите метод constructSettableProperty(DeserializationConfig config, BasicBeanDescription beanDesc, String name, AnnotatedMethod setter)
.Сделайте то же самое с параметром name
, который вы указали внутри своего пользовательского BeanSerializerFactory
.
Шаг 3. Создайте ObjectMapper
.
Установите фабрику сериализатора в качестве вашего пользовательского компонентаСериализатор заводской.Установите поставщика десериализатора (я использовал эту строку: objectMapper.setDeserializerProvider(new StdDeserializerProvider(new CustomJacksonBeanDeserializerFactory()))
).
Вот и все.Созданный вами ObjectMapper
будет использовать вашу новую схему именования при сериализации или десериализации JSON.