json字符串出现转义符,导致调用者使用ObjectMapper解析成Map报错

json1串:
{"orderCount":0,"signType":"SHA256WithRSA","sign":"85022E420F6F0429A2A1F8774C66C04BFF6085CEE37C6DC085F366733081689C16639B03B34455B7BAA2659E82FF8FD8A031643DA7D9A24B2F2898404758C0BD64F889E1B0C58BE0ADBFF59C292BCA4B55DC2CDA052A8AB964D99F1F2497386AA482A458F49442BD119DEBB7C2C90ACD8E2906C16290A810FAE8357D2D6175F10111D8DDBD108443F6D515AABD9B4879AF0D18B08257698E0FA2899CE012EEF1A6DFEEC25C6FFCEABD019AA70CE5CE13C388811FB55392D576B9EA55D3F45A426064262CA953D67A8E15B79E9DF42066D48B60FB0950EB6415FFC546C1D11EE2DF8A28907F8C65FA3B4D42514103C3CDC72594295E7874B6B3C72487333DCF9B","returnCode":"1","returnDesc":"系统执行错误"}

json2串:

"{\"orderCount\":0,\"signType\":\"SHA256WithRSA\",

\"sign\":\"85022E420F6F0429A2A1F8774C66C04BFF6085CEE37C6DC085F366733081689C16639B03B34455B7BAA2659E82FF8FD8A031643DA7D9A24B2F2898404758C0BD64F889E1B0C58BE0ADBFF59C292BCA4B55DC2CDA052A8AB964D99F1F2497386AA482A458F49442BD119DEBB7C2C90ACD8E2906C16290A810FAE8357D2D6175F10111D8DDBD108443F6D515AABD9B4879AF0D18B08257698E0FA2899CE012EEF1A6DFEEC25C6FFCEABD019AA70CE5CE13C388811FB55392D576B9EA55D3F45A426064262CA953D67A8E15B79E9DF42066D48B60FB0950EB6415FFC546C1D11EE2DF8A28907F8C65FA3B4D42514103C3CDC72594295E7874B6B3C72487333DCF9B\",\"returnCode\":\"1\",\"returnDesc\":\"系统执行错误\"}"

报错内容:

Can not instantiate value of type [map type; class java.util.LinkedHashMap, [simple type, class java.lang.Object] -> [simple type, class java.lang.Object]] from JSON String; no single-String constructor/factory method


原因:
使用中涉及如下两个方法:
public void sendText(HttpServletResponse response, String str)
			throws IOException {


		// 必须写上这句,中文编码问题
		response.setContentType("text/plain;charset=UTF-8");
		//response.setContentType("application/json;charset=utf-8");


		response.getWriter().write(str);
		response.getWriter().flush();
		response.getWriter().close();
}


public void sendResponse(HttpServletResponse response, Object object)
			throws IOException {
		logger.debug("响应的对象:{}", object);
		Gson gson = new Gson();
		String respJson = gson.toJson(object);
		
		logger.debug("响应的数据:{}", respJson);
		logger.debug("响应的状态:{}", response);
		sendText(response, respJson);
}


首先我将上述json1字符串传入sendResponse方法,其内部会对json1字符串再做一下json转换,此时得到json2串,即带有转译字符。
调用者获取json2串使用ObjectMapper转换成Map便会报上述错误。


解决方法:
     直接调用sendText方法发出响应。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值