服务端返回的json数据,导致前端报错的原因及解决方法

前言

最近在开发的过程中遇到了一个问题:后端传过来的json字符串不是标准的json字符串

导致报错的原因 

后端传过来的json字符串中包含一些不标准的字符或错误的引号嵌套

1)\n

2) \r

3) 双引号

4)单引号

5)双引号包含双引号

6)单引号包含单引号

解决办法

1)\n   

    前端:替换成\\n

2) \r

    前端:替换成\\r

3) 双引号

    前端:替换成"

4)单引号

  前端:替换成'

5)双引号包含双引号

    前端:双引号包含单引号

6)单引号包含单引号

    前端:单引号包含双引号

当然我们需要后端同时配合处理

可能存在问题

\\n失效,在页面并没有换行

解决办法:

方法一:我们可以在渲染页面前找到\n将其替换成<br/>

this.termUse=data.replace(/\n/g,'<br/>');
this.renderFloorContent(this.termUse);

补充:因为不同编辑输出的回车换行不太一样,如果你发现替换\n无效果,可以试着换成\r或者\r\n再看结果,总有一种可以替换成功

方法二:我们可以在渲染页面前需要循环字符换,将等于\n的字符串替换成“<br/>”,重组字符串

var i;
var result = "";
var c;
for (i = 0; i < str.length; i++) {
   c = str.substr(i, 1);
    if ( c == "\n")
       result = result + "</br>";
    else if (c != "\r")
       result = result + c;
}

方法二能用,但太麻烦不推荐

额外参考

取后台json过程由于转义字符出现的问题

转义字符(\\\\\\\\)对JavaScript中JSON.parse的影响概述

 

posted @ 2019-03-26 21:40  坤嬷嬷  阅读(2996)  评论(0编辑  收藏  举报