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串的不同之处,我也看了看源码,但是不太明白,所以到此结束~