最近在开发中遇到了这么一个问题,我在构造一个Json字符串的时候,由于这个JSON字符串的一个属性本身也是一个JSON字符串,所以在转换成字符串的时候这个子JSON字符串中就带了'\'反斜杠字符。导致后面传参发送到接收方识别不了。由于我不想通过处理JSON字符串(直接把\替换成空串),而是直接传进来就是正常的。经过一系列的尝试,终于将其解决。
一、问题复现:
//子json串
JSONObject childJsonObj = new JSONObject();
childJsonObj.put("name", "ICBC");
childJsonObj.put("position", "BJ");
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", "stalin");
jsonObj.put("old", "26");
jsonObj.put("sex", "man");
jsonObj.put("work", childJsonObj.toJSONString());
System.out.println(jsonObj.toJSONString());
结果如下:
图片中显示子JSON串中带了反斜杠'\'
二、解决方式:
我们应该直接把子JSON的对象传过去,而不是JSON字符串,否则会导致外层的JSON在转字符串时对子字符串进行二次转换,多加了反斜杠'\'。修改代码如下:
//子json串
JSONObject childJsonObj = new JSONObject();
childJsonObj.put("name", "ICBC");
childJsonObj.put("position", "BJ");
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", "stalin");
jsonObj.put("old", "26");
jsonObj.put("sex", "man");
jsonObj.put("work", childJsonObj);
System.out.println(jsonObj.toJSONString());
结果如下:
喜欢的朋友点点关注哦~~