在工作中,遇到對頁面數據進行轉存json格式數據后存儲在數據庫中.然而在顯示數據時遇到無法顯示json中的數據,產生的bug
問題拋出:

1.首先認識下,在JSON.parse()將后台傳過來的字符串數據轉存對象,遇到字符串中帶有轉義字符.然而JSON.parse()對轉義字的符執行過程其實經歷了兩次轉義,具體如下:
一次是字符串本身的轉義:
'{"test": "這是一個對象, 里面有 \\"test\\" 字段"}'
被轉換成
'{"test": "這是一個對象, 里面有 \"test\" 字段"}'
(可以直接在瀏覽器的命令行輸入這段字符串)
一次是字符串轉對象時的轉義:
因為已經被轉換成了
'{"test": "這是一個對象, 里面有 \"test\" 字段"}'
"\"會被認為是 """的轉義符,就會正確的轉成對象。
而當只有一個"\"的時候,到字符串轉對象的時候, test 字段值里就有兩對雙引號,就會報錯。
又去查了下 ES5 規范中的 parse 方法:

第一步應該是對應字符串本身的轉義
第二步則對應字符串轉對象時的轉義
也就是說:如果字符串中存在"\",那么我們需要寫成"\\\\";
因此,我們需要將字符串中"\"替換成"\\\\",於是,就需要使用js中的replaceAll()函數,而在js中不存在replaceAll()函數,那么需要我們自定義,或者使用正則進行,具體如下:

如果你是一個偷懶的話,可以選擇第一種,方便簡單.哈哈哈,,,個人推薦使用第三種.
