Z次元
文章 笔记 日志
专题
专栏分类 文章归档
友链
友情链接 朋友圈
交流
留言 关于我
头像
系列文章
-
-
-
-
String.valueOf()踩坑记录
系列文章
知识积累
最后更新:2024/12/15|创建时间:2024/5/23

处理空对象转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次元 ,若本文涉及转载第三方内容,请您一同注明。
更多专栏文章推荐
知识积累
人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。
使用Mapstruct轻松实现实体类转换
2024/3/1
后端传递Long类型数值,前端接收精度丢失(失真)问题
2023/9/20
JDK新版特性(18-21)
2025/2/7
JDK新版特性(11-17)
2025/1/30
评论区
发表评论

这里还没有评论哦

快来发一条评论抢占前排吧

前言
原因探究
解决办法
目录
前言
原因探究
解决办法
十玖八柒
每天进步多一点
欢迎到访φ(゜▽゜*)♪
最新评论
个人占星:

想给自己的网站弄个统计功能,但不会弄,头疼

永恒末匕:

好哇塞,这个厉害

十玖八柒:

测试图片发送

Corwin: @十玖八柒

哎 主要是我的个人网站用的是静态的cos 实现评论框还是有点困难

我的
个人主页
站点地图
RSS订阅
导航
十年之约
虫洞穿梭
全站友链
虚位以待
©2020 - 2025 By 十玖八柒 版权所有
豫ICP备20021466号