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;
 }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值