0
点赞
收藏
分享

微信扫一扫

JAVA主要解决JSONObject转义符太多斜杠问题\\\\\\\,String太多斜杠怎么处理,替换\\\\\工具类工具方法解决办法,java太多\\\\\\解决


 遇到的问题场景如下,断点打的JSON 格式:

主要是斜杠太多导致前端无法正常的展示,需要把斜杠全部替换掉,才可以不然前端展示有问题!

{\"日志\":\"2017-12-02 12:03:19,
\\\\\\\"elapsedRealtime\\\\\\\":\\\\\\\"1075259399471\\\\\\\",
\\\\\\\"source0Id\\\\\\\":\\\\\\\"\\\\\\\",
\\\\\\\"cheme\\\\\\\":\\\\\\\"false\\\\\\\",
\\\\\\\"sourceFromUri\\\\\\\":\\\\\\\"\\\\\\\",
\\\\\\\"sourceTime\\\\\\\":\\\\\\\"-1\\\\\\\",
\\\\\\"supportCache\\\":\\\"false\\\",
\\\"suppode\\\":\\\"true\\\",
\\\"paiType\\\":\\\"ode\\\",
\\\"protersion\\\\\\\":\\\\\\\"5.5.1\\\\\\\"}

问题发生的原因:

主要是串行序列化之后,转译成对象而后又转化为JSONOBject主要是因为Array->Obecjt 转义多次导致的。

保存数据库-自动添加斜杠,JSON菜单迭代转换,也会自动添加进去斜杠字符

解决办法就是使用StringEscapeUtils工具类直接的调用的处理进行转义。

import org.apache.commons.lang.StringEscapeUtils;


//主要是解决转义符太多斜杆个问题\\\\\\\",\\\\\\\"
datasJson=StringEscapeUtils.unescapeJavaScript(datasJson);
sout(datasJson);

第三方优秀的处理JAR:

import org.apache.commons.lang.StringEscapeUtils;

发生场景主要是发生在接口对接的时候,接收对象处理,以及对象发送。 

主要得maven依赖配置:

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>


教训总结:

在数据库之前使用这个字符串工具进行转义,虽然断点显示,转换正常,可是落库之后,Mysql会对JSON字符串里面的网址或者存储进行转义,导致会添加一个\\,所以最优化的方案就是在读取之后进行转义,这样一劳永逸。后者前台页面进行转义,比较麻烦。

前端的React其实也可以达到这个效果,主要是使用replace()

另一种解决办法

在前端的代码里面替换掉这些多余的斜杠然后写进去。替换掉里面的斜杠代码如下。

try{
let e1 = e.replace(/\\\\/g,"\\");
e1 = e1.replace(/\\\\/g,"\\");
e1 = this.replaceAll(e1, '&', '');
e1 = this.replaceAll(e1, '"', '"');
e1 = this.replaceAll(e1, 'quot;', '"');
e1 = this.replaceAll(e1, 'lt;', '<');
e1 = this.replaceAll(e1, 'agt;', '>');

return content;
} catch (e){
console.log(e);
return e1 ;
}



举报

相关推荐

0 条评论