JSONObject转String有“\“

1. 修改之前

DwxxDTO dwxxDTO = new DwxxDTO();
dwxxDTO.setEntname("测试公司");
dwxxDTO.setUniscid("91110100000000000Y");
dwxxDTO.setOrgancode("MA0000000");

ZgcbdjDTO zgcbdjDTO = new ZgcbdjDTO();
zgcbdjDTO.setCpdata(dwxxDTO);
zgcbdjDTO.setType(type);
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(zgcbdjDTO);

//方式一
Map<String, String> body = new HashMap<String, String>();
body.put("sha1", zaiyao);
body.put("data", jsonObject.toString());
String bodyStr = JSONObject.toJSONString(body);
//方式一打印结果
{
    
    
  "sha1": "tdvbaaaaaaaaA=",
  "data": "{\"type\":\"2\",\"cpdata\":{\"uniscid\":\"91110100000000000Y\",\"entname\":\"测试公司\",\"organcode\":\"MA0000000\"}}"
}

//方式二
JSONObject body = new JSONObject();
body.put("sha1", zaiyao);
body.put("data", jsonObject.toString());
String bodyStr = JSONObject.toJSONString(body);
//方式二打印结果
{
    
    
  "sha1": "tdvbaaaaaaaaA=",
  "data": "{\"type\":\"2\",\"cpdata\":{\"uniscid\":\"91110100000000000Y\",\"entname\":\"测试公司\",\"organcode\":\"MA0000000\"}}"
}

2. 原因:

有可能是因为jsonboject中包含另一个json串,应该把里面那个json串提取出来,用fluenPut(key,value)方法放到jsonobject中;

3. 修改之后

DwxxDTO dwxxDTO = new DwxxDTO();
dwxxDTO.setEntname("测试公司");
dwxxDTO.setUniscid("91110100000000000Y");
dwxxDTO.setOrgancode("MA0000000");

ZgcbdjDTO zgcbdjDTO = new ZgcbdjDTO();
zgcbdjDTO.setCpdata(dwxxDTO);
zgcbdjDTO.setType(type);
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(zgcbdjDTO);

JSONObject body = new JSONObject();
body.fluentPut("sha1",zaiyao);
body.fluentPut("data",jsonObject);
System.out.println("body入参:" + bodyStr);
//打印结果
{
    
    
  "sha1": "tdvbaaaaaaaaA=",
  "data": {
    
    
    "type": "2",
    "cpdata": {
    
    
      "uniscid": "91110100000000000Y",
      "entname": "测试公司",
      "organcode": "MA0000000"
    }
  }
}

4. fluentPut源码:

public JSONObject fluentPut(String key, Object value) {
    
    
        map.put(key, value);
        return this;
 }

猜你喜欢

转载自blog.csdn.net/m0_46459413/article/details/126054627#comments_25491740