后台返回前端 is....开头字段被屏蔽 (Java) |
与往常一样前端联调接口 , 收到前端同事的反馈说 : 两个相同的接口返回的某个字段却不一样.
实体类 :
public class Test{
private Boolean isEnable;
}
==============================
前端接收到的数据 :
{
"enable":true
}
问题 : 前端收到的字段名与定义的不一致 ! ! ! 很是蹊跷检查完代码无错误后 , 脑海里想起<阿里巴巴开发手册>里的一句话 , 明确禁止了这种已is开头定义布尔类型的变量命名方法 :
【强制】POJO 类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。
反例: 定义为基本数据类型Boolean isDeleted;的属性,它的方法也是isDeleted(), RPC框架在反向解析的时候,“以为”对应的属性名称是deleted,导致属性获取不到,进而抛出异常.
所以规范变量名是最佳推荐的.当然还有下面几种方式能够比较方便的解决这个问题.
1.增加序列化注解.
@JsonProperty(value = “isEnable”)
pirvate Boolean isEnable;
2.修改实体字段对应的get/set 方法为is开头的.
OVER See You Later !