当前位置: 代码迷 >> 综合 >> [解决问题]json过来的信息,少了一个Boolean的值,其他字段都解析正常,就是Boolean解析的值是null
  详细解决方案

[解决问题]json过来的信息,少了一个Boolean的值,其他字段都解析正常,就是Boolean解析的值是null

热度:63   发布时间:2023-09-27 02:05:58.0

java类是长这样的
[解决问题]json过来的信息,少了一个Boolean的值,其他字段都解析正常,就是Boolean解析的值是null
然后idea自动生成get和set方法
[解决问题]json过来的信息,少了一个Boolean的值,其他字段都解析正常,就是Boolean解析的值是null
解析的字段都有值,就是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

[解决问题]json过来的信息,少了一个Boolean的值,其他字段都解析正常,就是Boolean解析的值是null
解析结果就正常了
{faceId=‘90240’, repositoryId=‘null’, isHit=true, catchTime=‘2020-06-23 17:47:54’}

总结:遇到一些字段为isXxxx的布尔属性,要特别留意get和set方法的名称,要补齐,不然会出现bug

  相关解决方案