今天经过FastJson输出时,发现输出的内容中多了不少的反斜杠,致使前端的JS不能经过json来进行条件判断,从而影响了进程的正常运行。
运行环境:SpringBoot(1.5.21.RELEASE)+FastJson(1.2.47)前端
原本输出不该该有反斜杠的。json
正确的输出应该是: 后端
对比以后,发现就是在每一个双引号的前面加了反斜杠表示转义。
Google和百度以后,你们的答案基本是能够三位三种:post
- 经过String.ReplaceAll把"\"去掉;
(Java 反斜杠如何转义的问题,根据下图,能够看出,在后端代码中进行Replace是毫无心义的,由于生成的信息中本来没有反斜杠转义,反斜杠是FastJson的消息转换器添加上去的。 因此就须要在前端页面中JS判断Json输出的status是0仍是1以前,先将获得的Json信息Replace一下。可是若是须要判断的特别多的话,很麻烦。并且我用juqey的post方法,获得结果result并非简单的String,对result进行Replace并不可行。。。orz)(对我并不适用。)
- 直接返回对象,而不是返回String;
(fastjson如何去掉多余的反斜杠,这里我测试了一下我本身的,仍是不行。。。)
- fastjson的SerializerFeature能够设置不进行字符转义
(fastjson SerializerFeature含义,这个能够设置DeDisableCheckSpecialChar 一个对象的字符串属性中若是有特殊字符如双引号,将会在转成json时带有反斜杠转移符。若是不须要转义,可使用这个属性。默认为false。 个人FastJson版本为1.2.47,显示已经不推荐使用了。我依然试了试,仍是不行。。。。。。 )
以上是我经过Google和百度的结果,仍没有解决个人问题。
由于如今我在作的功能是仿的一个SpringBoot项目,因此,仍没有结果的状况下,我去一一对照了个人代码和他的代码,我发现本来的项目中,只找到了pom添加了fastjson的依赖,并无在SpringBoot的主程序对消息转换器即HttpMessageConverters进行注入配置。 这也就是说,原项目中使用的是SpringBoot本来默认的消息转换器配置,为了解决个人问题,我把fastjson的配置注释了。。测试
是的,好了。
回到最开始出问题的地方,也解决了。.net
若是你也遇到了一样的问题,欢迎留言,咱们一块儿讨论。3d
虽然解决了目前的问题,可是仍是不太明白。cdn
下一步,抽出时间,了解SpringBoot的默认消息转换机制,对比和以前FastJson的配置。