“布尔类型的变量名不要加is前缀”原理解析

FastJson序列化布尔字段命名规范:避免is前缀导致的错误
本文探讨了在使用阿里系框架如FastJson时,如何避免因布尔变量名以'is'开头引发的序列化错误。通过解析FastJson源码,了解了其自动转换getter命名的机制,并强调了在前端后端分离项目中的注意事项。

最近阅读公司的规范,发现了这样的一条:

【强制】POJO 类中的任何布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误。

如果读者研发的产品正在大量使用阿里系框架,这个问题就需要十分注意。

我们假设一个场景,设计文档中设计了一个类,其中某个field命名为 isXx:

这时,对于前端后分离的项目,前端认为你返回的json中将存在一个 Key为 “isXx”的value。后端亦是如此开发。

Class SomeClass{
boolean isXx;
/...
}

如果使用FastJson框架序列化SomeClass类的实例对象。直观理论上,应该返回前端一个:

{
    "isXx" : true/false
}

然而实际上,前端获取到的json数据为:

{
    "Xx" : true/false
}

显然,前后端都按设计文档开发了,直观理论无误。那么问题,就出在了传递的过程。

通过阅读FastJson源码,发现:

//com.alibaba.fastjson.util.TypeUtils.computeGetters

if (methodName.startsWith("is")) {
                if (methodName.length() < 3) {
                    continue;
                }
                if (returnType != Boolean.TYPE
                        && returnType != Boolean.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值