文章目录

一、 问题现象:
1.1. 前台数据
ryTask.serchData('000000INC20200830000001','2020-10-01','2020-10-21','Project','LSubmitInfo','INC')
1.2.后台数据
ryTask.serchData('000000INC20200830000001','2020-10-01','2020-10-21','Project','LSubmitInfo','INC')

前台json放入form表单文本框提交,
怎么到后台我的双引号​​​"​​​就变了,​​"​​​ 左括号变成了​​(​​ 右括号变成了​​)​​ 单引号变成了​​'​

二、 解决方案:
2.1. maven依赖
<!--解决前台传递参数转译问题-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>

但是,commons-lang3中的StringEscapeUtils过期了,用下面的依赖代替即可

<!--解决前台传递到后台参数特殊字符转译工具-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.1</version>
</dependency>
2.2. 关键代码
//将接收到的jsonStr处理一次,就OK了
String newJson = StringEscapeUtils.unescapeHtml4(jsonStr);
2.3. 去空格处理

前台传递过来的数据居然每个参数之间多了空格

public static void main(String[] args) {
String str = "ryTask.serchData& #40;& #39;000000INC20200830000001& #39;,& #39; 2020-10-01& #39;,& #39; 2020-10-21& #39;,& #39;Project& #39;,& #39;LSubmitInfo& #39;,& #39;INC& #39;& #41;";
String replace = str.replace(" ", "");
System.out.println(replace);
System.out.println(StringEscapeUtils.unescapeHtml4(replace));
// System.out.println(StringEscapeUtils.unescapeHtml4("()"));
}

最后利用java的StringEscapeUtils.unescapeHtml4,成功解决问题