Jackson 不使用hasgetter 方法处理我的布尔字段。例如animal.hasLegs(),对于legs字段返回一个不带该legs字段的 JSON 对象。它确实可以与 getter 方法一起使用is(person.isAwesome()对于布尔字段awesome)。
如何让 Jackson 使用has布尔字段的方法命名约定?
用注释所有需要的hasXXX()方法@JsonGetter。否则杰克逊根本不使用这个属性,因为它不以以下开头get:
@JsonGetter
public boolean hasAwesome() { ... }
Run Code Online (Sandbox Code Playgroud)设置 custom PropertyNamingStrategy,它将映射从方法名称重命名为 JSON 字段。默认情况下,它将生成名为 的 JSON 字段hasXXX。
ObjectMapper mapper = ...
mapper.setPropertyNamingStrategy(new PropertyNamingStrategy() {
@Override
public String nameForGetterMethod(MapperConfig<?> config, AnnotatedMethod method, String defaultName) {
String prefix = "has";
if (defaultName.startsWith(prefix)) {
String withoutHas = defaultName.replace(prefix, "");
char firstLower = Character.toLowerCase(withoutHas.charAt(0));
return firstLower + withoutHas.substring(1);
}
return super.nameForGetterMethod(config, method, defaultName);
}
});
Run Code Online (Sandbox Code Playgroud)