fastjson中JSONObject对象的getString()方法遇到的坑

public class Test {
   public static void main(String[] args) {
        String str = "{\"context\":\"{\\\"flightNo\\\":\\\"ZH9112\\\",\\\"flightDate\\\":\\\"2021-06-30\\\",\\\"userId\\\":\\\"13706024\\\", \\\"tktNum\\\":\\\"54028714511230\\\",\\\"coupon\\\":\\\"1\\\", \\\"seatNum\\\":\\\"\\\",\\\"deptCode\\\":\\\"\\\", \\\"destCode\\\":\\\"SZX\\\", \\\"mobile\\\":\\\"18601246870\\\"}\"\n" +
                "}";
        String objectStr = "{\"context\":{\"tktNum\":\"54028714511230\",\"flightNo\":\"ZH9112\",\"seatNum\":\"\",\"flightDate\":\"2021-06-30\",\"coupon\":\"1\",\"destCode\":\"SZX\",\"mobile\":\"18601246870\",\"userId\":\"13706024\",\"deptCode\":\"\"}}";
        
        JSONObject strJSON = JSONObject.parseObject(str, JSONObject.class);
        JSONObject objectJSON = JSONObject.parseObject(objectStr, JSONObject.class);

        System.out.println("111: " + strJSON.getString("context"));
        System.out.println("222: " + objectJSON.getString("context"));
        System.out.println("====================================================================================================================");
        System.out.println("333: " + JSONObject.toJSONString(strJSON.get("context")));
        System.out.println("444: " + JSONObject.toJSONString(objectJSON.get("context")));
    }
}

执行结果:

111: {"flightNo":"ZH9112","flightDate":"2021-06-30","userId":"13706024", "tktNum":"54028714511230","coupon":"1", "seatNum":"","deptCode":"", "destCode":"SZX", "mobile":"18601246870"}
222: {"tktNum":"54028714511230","flightNo":"ZH9112","seatNum":"","flightDate":"2021-06-30","coupon":"1","destCode":"SZX","mobile":"18601246870","userId":"13706024","deptCode":""}
====================================================================================================================
333: "{\"flightNo\":\"ZH9112\",\"flightDate\":\"2021-06-30\",\"userId\":\"13706024\", \"tktNum\":\"54028714511230\",\"coupon\":\"1\", \"seatNum\":\"\",\"deptCode\":\"\", \"destCode\":\"SZX\", \"mobile\":\"18601246870\"}"
444: {"tktNum":"54028714511230","flightNo":"ZH9112","seatNum":"","flightDate":"2021-06-30","coupon":"1","destCode":"SZX","mobile":"18601246870","userId":"13706024","deptCode":""}

看了上面的代码,大家一定会觉得很简单的代码,有什么问题呢?现在由我来揭穿它坑爹的面纱!!

str字符串转换成json格式:
在这里插入图片描述

objectStr字符串转换成json格式:
在这里插入图片描述
虽然这两个字符串看起来很像,但是实际上当两者转换成json格式后,可以清晰地看出前者context这个key对应的值类型是String类型,后者context这个key对应的值类型是对象类型

针对上述两个字符串,使用JSONObject提供的 getString() 将context这个key对应的值以String类型提取出来时,惊奇地发现结果的格式、包含的字段都是一样的,并不能看出来原始数据之间的差别。如果是需要根据value类型不同做不同处理的情况,那这种方式是无法达到目的

接下来,我尝试着使用 JSONObject.toJSONString() 方法来做这件事,发现得到的结果和我的预期是一样的,能够显而易见地判断出原始数据的类型

这两种方式获取String串的不同之处,我也看了看源码,但是不太明白,所以到此结束~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值