स्वीकृत उत्तर मेरे मामले के लिए काम नहीं करेगा।
मेरे मामले में, वर्ग मेरे स्वामित्व में नहीं है। समस्याग्रस्त वर्ग 3 पार्टी निर्भरताओं से आता है, इसलिए मैं इसमें केवल @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);
}
});
मूल रूप से यह क्या करता है serializing और deserializing, यह लक्ष्य / स्रोत वर्ग जो संपत्ति नाम वर्ग में मौजूद है, चाहे वह है में चेक से पहले, है isEnabledया enabledसंपत्ति।
उसके आधार पर, मैपर अनुक्रमित होगा और मौजूद संपत्ति के नाम को डिसेर्बलाइज करेगा।
isSuccessतो आपकोisIsSuccessलगता है कि मेरे नाम की विधि होनी चाहिए