返回对象的字符串表示形式。
默认返回格式:对象的 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 extends Model>) JSONArray.parseArray(kv.get("data").toString(), Class.forName(prefix + action));
我现在用以上这种写法,是可以成功的获取到该value值的,但是获取不到性别为男的name,因为在使用Object.toString()方法的时候,将会自动不输出为空的属性值,因此,该种写法并不能够满足我们的需求。
② 使用JSONObject.toJSONString(Object object, SerializerFeature... features)方法
list = (List extends Model>) JSONArray.parseArray(JSONObject.toJSONString(kv.getAs("data"), SerializerFeature.WriteMapNullValue), Class.forName(prefix + action));
现在使用这种形式,调用JSONObject.toJSONString()方法
传入SerializerFeature.WriteMapNullValue参数即可在保留原json格式的情况下,将value转换成String类型同时保留为空的子节点了。
分隔线
这是第一次自己在博客上面记笔记,总的来说是很开心的,虽然明白自己总结的不是很清晰,但相信自己可以慢慢进步的,以后会将自己在工作中遇到的问题都记录下来保存在博客中,端正自己的工作以及学习态度,加油!



