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
SpringBoot集成轻量级搜索引擎——Meilisearch
2025/8/7
JDK新版特性(18-21)
2025/2/7
评论区

删除确认

评论删除后无法恢复,请确认是否继续?
发表评论

这里还没有评论哦

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

前言
原因探究
解决办法
目录
前言
原因探究
解决办法
博客
文章 笔记 日志
专题
专栏分类 文章归档
友链
友情链接 朋友圈
交流
留言 关于我
主页
菜单
置顶
主题
我的
十玖八柒
每天进步多一点
欢迎到访φ(゜▽゜*)♪
最新评论
个人占星:
DeepSeek没有想象中的好用
个人占星:
想给自己的网站弄个统计功能,但不会弄,头疼
永恒末匕:
好哇塞,这个厉害
十玖八柒:
测试图片发送
我的
关于我
个人主页
站点地图
RSS订阅
导航
十年之约
虫洞穿梭
开源博客
前端开源仓库
后端开源仓库
©2020 - 2025 By 十玖八柒 版权所有
豫ICP备20021466号