服務端返回的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的影響概述

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM