最近阅读公司的规范,发现了这样的一条:
【强制】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.
FastJson序列化布尔字段命名规范:避免is前缀导致的错误

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

被折叠的 条评论
为什么被折叠?



