Spring Boot接口响应生成时实体类isRequired属性变为required是什么原因?
问题原因说明
该现象是Spring Boot默认使用的Jackson序列化框架的默认命名规则导致的,具体逻辑如下:
- Jackson处理JSON序列化时,针对**基本类型
boolean**的字段,若字段名以is开头、或对应getter方法遵循isXxx的JavaBean命名规范,会自动裁剪掉开头的is前缀,将剩余部分作为序列化后的JSON属性名。 - 你的
isRequired是基础类型boolean,符合上述规则,因此序列化后属性名变为required;而同属基础类型boolean的suggestLocation没有以is开头,所以命名不会发生变化。
解决方案
你可以按需选择以下任意一种方案解决:
- 在对应字段上添加Jackson注解强制指定序列化名称:
@JsonProperty("isRequired") boolean isRequired;
- 将字段类型从基础类型
boolean改为包装类型Boolean,Jackson对包装类型的布尔字段默认不会裁剪is前缀。 - 全局修改Jackson序列化配置,关闭针对boolean类型的
is前缀裁剪逻辑,该方案会影响项目所有接口的序列化规则,不推荐非必要场景使用。
内容的提问来源于stack exchange,提问作者nardiyansah
相关产品推荐
相关产品推荐

