StringEscapeUtils工具类解决返回数据转化为Json后多斜杠(\)问题和StringEscapeUtils常用功能

1 篇文章 0 订阅

问题描述:后端数据库存储为文本形式,其中文本中有"\n",但前端调用后端接口后,返回数据多出一个斜杠("\"),造成换行失效。

原因分析:原始字符串中为单斜杠("\n"),但通过@RestController后返回到前端会变为双斜杠("\\n"),原因是因为:@RestController相当于@Controller和@ResponseBody,而@ResponseBody是转Json的。

解决办法:
String str = "证件信息不匹配,请重新输入,如有疑问请联系:\\n\\n400 8855 258";
采用 StringEscapeUtils.unescapeJavaScript(str )方法,此种方法返回结果满足要求,返回结果为:"证件信息不匹配,请重新输入,如有疑问请联系:\n\n400 8855 258"

String newString = StringEscapeUtils.unescapeJavaScript(str );

        Map<Object, Object> map = new HashMap<>();
        map.put("escapeHtml",StringEscapeUtils.escapeHtml("<a>abc</a>"));
        map.put("unescapeHtml",StringEscapeUtils.unescapeHtml("&lt;a&gt;abc&lt;/a&gt;"));

        map.put("escapeJavaScript",StringEscapeUtils.escapeJavaScript("<script>alert('123')<script>"));
        map.put("unescapeJavaScript",StringEscapeUtils.unescapeJavaScript("<script>alert(\'123\')<script>"));

        map.put("escapeJava",StringEscapeUtils.escapeJava("你好"));
        map.put("unescapeJava",StringEscapeUtils.unescapeJava("\u4F60\u597D"));

        map.put("escapeXml",StringEscapeUtils.escapeXml("<name>贝贝</name>"));
        map.put("unescapeXml",StringEscapeUtils.unescapeXml("&lt;name&gt;&#36125;&#36125;&lt;/name&gt;"));

        StringBuffer sql = new StringBuffer("select * from users where 1=1 ");
        String keyWord="aaa' or '1=1";
        sql.append(" and username like '%" + StringEscapeUtils.escapeSql(keyWord) + "%'");
        map.put("escapeSql",sql.toString());

{

    "unescapeJava": "你好",

    "escapeSql": "select * from users where 1=1  and username like '%aaa'' or ''1=1%'",

    "escapeHtml": "&lt;a&gt;abc&lt;/a&gt;",

    "unescapeJavaScript": "<script>alert('123')<script>",

    "escapeXml": "&lt;name&gt;&#36125;&#36125;&lt;/name&gt;",

    "escapeJava":"\你\好",

    "unescapeHtml": "<a>abc</a>",

    "escapeJavaScript": "<script>alert(\\'123\\')<script>",

    "unescapeXml": "<name>贝贝</name>"

}

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值