栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Object的toString()方法遇到的坑

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Object的toString()方法遇到的坑

官方描述:

返回对象的字符串表示形式。

默认返回格式:对象的 class 名称 + @ + hashCode 的十六进制字符串。

问题描述

当我使用HashMap中的get()方法获取了一个JSON格式的对象a之后,调用了a.toString()方法,系统将会自动将对象a中为空的的子节点清空(自动不读取)。

解决办法

使用JSONObject.toJSONString(a, SerializerFeature.WriteMapNullValue)

即可又保留原json格式,又可以将其改变成字符串的形式,还不会将为空的子节点清空。

情景示例

kv是一个HashMap的对象,我现在需要的是获取kv中key为"data"的value(该值为json格式)。

key: data

value: [{"age": "12", "sex": "男", name: null},{"age": "18", sex: "女", name: "小红"}]

① 使用kv.get("key").toString()的形式——不能够满足需求

list = (List) JSONArray.parseArray(kv.get("data").toString(), Class.forName(prefix + action));

        我现在用以上这种写法,是可以成功的获取到该value值的,但是获取不到性别为男的name,因为在使用Object.toString()方法的时候,将会自动不输出为空的属性值,因此,该种写法并不能够满足我们的需求。

② 使用JSONObject.toJSONString(Object object, SerializerFeature... features)方法

list = (List) JSONArray.parseArray(JSONObject.toJSONString(kv.getAs("data"), SerializerFeature.WriteMapNullValue), Class.forName(prefix + action));

        现在使用这种形式,调用JSONObject.toJSONString()方法

        传入SerializerFeature.WriteMapNullValue参数即可在保留原json格式的情况下,将value转换成String类型同时保留为空的子节点了。


分隔线

这是第一次自己在博客上面记笔记,总的来说是很开心的,虽然明白自己总结的不是很清晰,但相信自己可以慢慢进步的,以后会将自己在工作中遇到的问题都记录下来保存在博客中,端正自己的工作以及学习态度,加油!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号