Jackson 不使用 has
getter 方法处理我的 boolean 字段。例如animal.hasLegs()
,对于legs
字段返回一个没有legs
字段的JSON对象。它确实适用于 is
getter 方法(person.isAwesome()
用于 boolean 字段 awesome
)。
如何让 Jackson 对 boolean 字段使用 has
方法命名约定?
最佳答案
用
开头的@JsonGetter
注释所有需要的hasXXX()
方法。否则 Jackson 根本不使用这个属性,因为它不是以get
:@JsonGetter public boolean hasAwesome() { ... }
设置自定义
PropertyNamingStrategy
,重命名从方法名称到 JSON 字段的映射。默认情况下,它将生成名为hasXXX
的 JSON 字段。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); } });
关于java - 如何将 'has' 方法命名约定用于 Jackson 的 boolean 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42579672/