背景
在写代码的时候发现了一个很无语的bug,我的Vo类定义
controller层
后端生成的数据
正常而言前端接收到的json数组中应该有 mean 属性和isRight属性,但是我发现前端实际接收到的为
我的isright变成了right,这可真是令人蛋疼,后来经过百度发现
lombok在生成getset方法的时候会对于Bool类型的变量会生成is****的方法,而现在变量名就为is***,因此生成的json的属性就是***而不是is***
解决方法
-
在get方法上面加入@JsonProperty(value = “isHot”)注解
-
手动修改 get/set 方法名为getIsHot/setIsHot
但是上面两种都不推荐
这种方式在某些时候是可以正常运行的,但是在一些rpc框架里面,当反向解析读取到isSuccess()方法的时候,rpc框架会“以为”其对应的属性值是success,而实际上其对应的属性值是isSuccess,导致属性值获取不到,从而抛出异常。
同时在阿里巴巴java开发手册中就明确禁止了这种变量命名方法
所以,修改变量名使其符合规范才是上策