java类是长这样的
然后idea自动生成get和set方法
解析的字段都有值,就是isHit这个布尔没有值是null
打印这个对象的toString方法
结果是:{faceId=‘90240’, repositoryId=‘null’, isHit=null, catchTime=‘2020-06-23 16:41:45’}
很奇怪为什么这个属性(字段)没有值呢?
百度搜索关键字:json boolean set get is
得到以下结果:
原因
- 因为boolean值属性没有按照JavaBean规范进行命名。JavaBean规范这样说:如果一个属性是boolean值,假设名为property,则其setter方法应该是setProperty,其getter方法应该为isProperty。
- 当我们对isTest这个boolean类型的属性使用Eclipse自动生成setter/getter方法时,其生成的getter方法时isTest,这样的话,fastjson就会以为这个属性是test,从而输出结果是test。
解决 - 方式1:规范boolean值命名,将isTest调整为test,这样其结果为{“test”:false,”url”:true}
- 方式2:规范boolean值的getter方法,将isTest调整为isIsTest方法,这样其结果为{“isTest”:false,”url”:true}
好吧,是idea生成的这个有问题,于是改成下面这样,补充上Is
解析结果就正常了
{faceId=‘90240’, repositoryId=‘null’, isHit=true, catchTime=‘2020-06-23 17:47:54’}
总结:遇到一些字段为isXxxx的布尔属性,要特别留意get和set方法的名称,要补齐,不然会出现bug