isXXX的字段,get方法习惯性写成isXXX(),但是fastjson不支持这种常用习惯,解析不到,必须使用getIsXXX()方法,建议可以兼容下isXXX()这种写法
[alibaba/fastjson]isXXX开头的字段解析时不符合常用习惯
回答
我估计是你的习惯错了吧~ isXXX只支持boolean,不支持Boolean,jdk就是那么干的,如果非要支持Boolean,那是非标准行为
我估计是你的习惯错了吧~ isXXX只支持boolean,不支持Boolean,jdk就是那么干的,如果非要支持Boolean,那是非标准行为
可能是我表诉的不清楚,我的意思是fastjson即使是is开头的字段(比如isMuted)也需要使用set、get加完整字段的set、get方法(setIsMuted()、getIsMuted()),而不是常规的isMuted()、getMuted(),后者会导致解析不出来
我估计是你的习惯错了吧~ isXXX只支持boolean,不支持Boolean,jdk就是那么干的,如果非要支持Boolean,那是非标准行为
可能是我表诉的不清楚,我的意思是fastjson即使是is开头的字段(比如isMuted)也需要使用set、get加完整字段的set、get方法(setIsMuted()、getIsMuted()),而不是常规的isMuted()、getMuted(),后者会导致解析不出来
那仍旧不对,javaBean的标准里并不存在这样的习惯~
这里有个详细的回复,记录一下: https://github.com/alibaba/fastjson/issues/278
看了,那完全是对javabean规范一无所知导致的bug,本人认为完全不应该为这种情况做修复,因为这可能会引出新的bug。
另外那个所谓的bug,其核心其实不是带is前缀的问题,而是json库普遍存在的一个问题。判断属性名到底按照字段名,还是getter方法名,还是setter方法名。既然出现了那个“bug”,说明fastjson是使用getter或setter方法来决定的。如果文档里有写明这点,那就是可预期的结果,如果为此而进行所谓的“修复”,其实等于是引入了bug,得到非预期的结果