json的containsKey的判断,明明没有这个key,为什么判断显示有?

    本人用的是fastjson的json处理工具,今天出现了一个奇怪的事情,在用containsKey的时候,打印出来的json字符串,没有这个key值,但是为什么会进去呢?测试了很久,觉得很诡异,后来问了一个踩坑多年的老司机,才知道问题所在,在json进行tostring的时候,如果值是null的时候,打印的时候,不会打印出value为null的key。

    如下测试代码,以及结果:

package com.lk.test;

import com.alibaba.fastjson.JSONObject;

public class FastjsonTest {

	public static void main(String[] args) {
		JSONObject orginl_obj = new JSONObject();
		orginl_obj.put("one", 1);
		orginl_obj.put("two", 2);
		orginl_obj.put("three", 3);
		orginl_obj.put("four", 4);
		System.out.println("原始的json值:" + orginl_obj.toString());
		orginl_obj.put("four", null);
		System.out.println("此时将值变为null:" + orginl_obj.toJSONString());
		if (orginl_obj.containsKey("four")) {
			System.out.println("the key is exist,and value is :" + orginl_obj.get("four"));
		}
	}
}

结果:

原始的json值:{"four":4,"one":1,"two":2,"three":3}
此时将值变为null:{"one":1,"two":2,"three":3}
the key is exist,and value is :null
如果还有哪些坑,欢迎留言,一起探讨。这里只做了fastjson的测试,其他的json是否会这样,大家可以自行测试。

转载于:https://www.cnblogs.com/timeout/p/10145640.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值