前言
最近在開發的過程中遇到了一個問題:后端傳過來的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;
}
方法二能用,但太麻煩不推薦
額外參考
轉義字符(\\\\\\\\)對JavaScript中JSON.parse的影響概述