处理空对象转String时,String.valueOf()返回"null",导致后续转换错误。建议提前判空或使用工具类处理。
前言
一次处理第三方接口的JSON数据时,需要转成Object类型的属性转为字符串时,发现空对象竟然被转成了字符串类型的"null"
而不是空字符串""
。
原因探究
通过阅读java.lang
包下String.valueOf()
的源码后发现,当Object对象为空时,会直接返回字符串类型的"null":
(obj == null) ? "null" : obj.toString();
正常情况下,这种逻辑其实也不会有问题。
但是如果这个数据是一个数字,比如:123
,经过JSON转换后变成了字符串"123"
。
然后我们从JSON中取出后,是Object类型,又因为该数据其实是字符串,所以需要先转为String再转为Integer。
正常情况下,上面这个情况也不会有问题。
但是如果这个数字一开始就是空,那么我们从JSON中取出后,他就是null
,此时我们调用String.valueOf()
,它就会变成"null"
,这个使用再调用Integer.parseInt()
方法就会报错了。
解决办法
建议在使用String.valueOf()
方法前,对Object类型的数据判空,进行特殊处理,再调用该方法转为String。异或者先判空再强转。
当然也使用一些已经处理过的第三方工具类实现Object类型转为String类型。
版权声明
本文依据
CC-BY-NC-SA 4.0
许可协议授权,请您在转载时注明文章来源为
Z次元
,若本文涉及转载第三方内容,请您一同注明。
知识积累
人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。
评论区
发表评论
这里还没有评论哦
快来发一条评论抢占前排吧
前言
原因探究
解决办法