Kabul edilen cevap davam için işe yaramayacak.
Benim durumumda, sınıf bana ait değil. Sorunlu sınıf, 3. parti bağımlılıklardan geliyor, bu yüzden ona sadece @JsonProperty
açıklama ekleyemiyorum .
Bunu çözmek için yukarıdaki @burak cevabından esinlenerek, PropertyNamingStrategy
aşağıdaki gibi bir gelenek oluşturdum :
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);
}
});
Temel olarak bunun yaptığı şey, serileştirmeden ve seriyi kaldırmadan önce, hedef / kaynak sınıfta sınıfta hangi özellik adının mevcut olduğunu, isEnabled
ister enabled
özellik ister özellik olsun, kontrol etmektir .
Buna dayanarak, eşleyici, var olan özellik adına seri hale getirecek ve serisini kaldıracaktır.
isSuccess
yöntem adıisIsSuccess
bence olmalı