(这是返回的字段列表)
字段名 | 类型 |
isAuth | boolean |
filedB | boolean |
按照国际惯例,我在本地下写了接收json的bean。如下:
public class Test{
private boolean isAuth;
private boolean fieldB;
(get set 方法略)
}
因为本来我就只是为了避免前端页面出现跨域问题,所以做了中间工作的转发,也就是B服务器返回什么我就直接返回给前端,代码写好后,模拟测试一遍,觉着网络没问题我就发布到测试环境里去。
前端在测试的时候,觉着数据不对,前端拿到的是:{"isAuth":false,"fieldB":true},isAuth应该是true,可是从我后台拿到的isAuth却是false。当时我的第一反应就是甲服务器的数据问题,和我无关,把问题抛给甲后,甲根据服务器日志告诉我返回的是:{"isAuth":true,"fieldB":true}。当时就有点不明白什么原因,莫非灵异事件?仔细校对文档,每个字段都是正确的,clean一下,结果仍是fasle,饭店到了后,仍未解决问题。。。
2点上班后,甲问我找到原因了吗?
我说:没有找到,怀疑是isAuth是boolean型,可能字段名有误,isAuth默认成了false,考虑灵异事件,准备删掉原来的bean,重新搞一个。
甲:isAuth的类型是Boolean,如果isAuth是小写的boolean的话,在转换过程中会找不到,会默认为false,所以当时代码里就写成了Boolean,以对象的方式。(ps:至于文档,我猜测是甲在写文档的那段时间,因为忙,也没有注意到,就直接写成了boolean。)
最终,代码修改为 private Boolean isAuth; 问题就解决了。这次找bug,也让我想起了基础课的时候,老师说的boolean类型的变量,都不要字段名前带is,如果一定要带,那就改为Boolean类型。
ps:感兴趣转换过程中为什么会找不到的话,可以百度搜索:boolean is