由Json数据 [{}] 引发的关于Java空对象的一点理解

场景描述:来了段 "[{}]"这样的Json数据, 一开始我取到这个数组了,但我看到里面的{}这个东西,以为它是空的…

开始{}对象的调查之旅吧~~
(话说怎么换行)

Java代码:

    //TestBean
    //测试 [{}]   //理想情况 [{"key":"value"}]
    String value = "[{}]";
    String value2 = "[{\"key\":\"value\"}]";
    String value3 = "[{\"errorKey\":\"errorValue\",\"Mimi\":{\"key\":0,\"isGirl\":true},\"key\":\"value\"}]";
    JSONArray jsonArray = JSONObject.parseArray(value3); // 测试异常情况
    if (jsonArray == null) {
        //转换失败,说明它不是数组形式
    } else {
        if (jsonArray.size() == 0) {
            //说明它是空数组
        } else {
            //说明它不是空数组,至少有1个元素
            JSONObject jsonObject = jsonArray.getJSONObject(0);
            /*if (jsonObject == null) {
                //说明这个JSON对象为空
                Logcat.e("{} 对应的jsonObject: 为null!!");
            } else {
                //说明这个JSON对象不为空
                //TODO 测试结果是它走到了这里
                Logcat.d("{} 对应的jsonObject: 不为null");
            }*/

            TestBean testBean = jsonObject.toJavaObject(TestBean.class);
            if (testBean == null) {
                Logcat.e("TestBean: \n" + null + "\n这个java对象是空的噢噢噢!");
            } else {
                Logcat.d("TestBean: \n" + testBean + "\n这个java对象不是空的嗯嗯嗯");
            }
        }
    }


    String value5 = "{\"key\":\"value\"}";
    TestBean testBean2 = JSONObject.parseObject(value5, TestBean.class);
    if (testBean2 == null) {
        Logcat.e("> TestBean2: \n" + null + "\n这个java对象是空的噢噢噢!");
    } else {
        Logcat.d("> TestBean2: \n" + testBean2 + "\n这个java对象不是空的嗯嗯嗯");
    }


    String value4 = "{}";
    TestBean testBean = JSONObject.parseObject(value4, TestBean.class);
    if (testBean == null) {
        Logcat.e("> TestBean: \n" + null + "\n这个java对象是空的噢噢噢!");
    } else {
        Logcat.d("> TestBean: \n" + testBean + "\n这个java对象不是空的嗯嗯嗯");
    }

代码执行结果:

1个小坑
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

{}
可以理解,这个东西为1个特殊的对象,即不为null

时间问题,简单总结,到此为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值