Прийнята відповідь не підійде для мого випадку.
У моєму випадку клас не належить мені. Проблемний клас походить від сторонніх залежностей, тому я не можу просто додати @JsonProperty
в нього анотацію.
Щоб її вирішити, надихнувшись відповіддю @burak вище, я створив спеціальний приклад PropertyNamingStrategy
наступним чином:
mapper.setPropertyNamingStrategy(new PropertyNamingStrategy() {
@Override
public String nameForSetterMethod(MapperConfig<?> config, AnnotatedMethod method, String defaultName)
{
if (method.getParameterCount() == 1 &&
(method.getRawParameterType(0) == Boolean.class || method.getRawParameterType(0) == boolean.class) &&
method.getName().startsWith("set")) {
Class<?> containingClass = method.getDeclaringClass();
String potentialFieldName = "is" + method.getName().substring(3);
try {
containingClass.getDeclaredField(potentialFieldName);
return potentialFieldName;
} catch (NoSuchFieldException e) {
}
}
return super.nameForSetterMethod(config, method, defaultName);
}
@Override
public String nameForGetterMethod(MapperConfig<?> config, AnnotatedMethod method, String defaultName)
{
if(method.hasReturnType() && (method.getRawReturnType() == Boolean.class || method.getRawReturnType() == boolean.class)
&& method.getName().startsWith("is")) {
Class<?> containingClass = method.getDeclaringClass();
String potentialFieldName = method.getName();
try {
containingClass.getDeclaredField(potentialFieldName);
return potentialFieldName;
} catch (NoSuchFieldException e) {
}
}
return super.nameForGetterMethod(config, method, defaultName);
}
});
В основному, це робиться так, що перед серіалізацією та десеріалізацією він перевіряє в цільовому / вихідному класі, яке ім'я властивості присутнє в класі, чи є воно, isEnabled
або enabled
властивість.
Виходячи з цього, картограф буде серіалізувати та десеріалізувати існуюче ім’я властивості.
isSuccess
ви маєте назвати метод,isIsSuccess
я думаю