對JSON.parse()中存在轉義字符的解決以及js中替換函數replace()的認識


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

問題拋出:

 

 

1.首先認識下,在JSON.parse()將后台傳過來的字符串數據轉存對象,遇到字符串中帶有轉義字符.然而JSON.parse()對轉義字的符執行過程其實經歷了兩次轉義,具體如下:

一次是字符串本身的轉義:

'{"test": "這是一個對象, 里面有 \\"test\\" 字段"}'

被轉換成

'{"test": "這是一個對象, 里面有 \"test\" 字段"}'

(可以直接在瀏覽器的命令行輸入這段字符串)

一次是字符串轉對象時的轉義:

因為已經被轉換成了

'{"test": "這是一個對象, 里面有 \"test\" 字段"}'

"\"會被認為是 """的轉義符,就會正確的轉成對象。

而當只有一個"\"的時候,到字符串轉對象的時候, test 字段值里就有兩對雙引號,就會報錯。

又去查了下 ES5 規范中的 parse 方法:

https://img1.mukewang.com/5c1c76430001875c06280073.jpg

第一步應該是對應字符串本身的轉義

第二步則對應字符串轉對象時的轉義

也就是說:如果字符串中存在"\",那么我們需要寫成"\\\\";

因此,我們需要將字符串中"\"替換成"\\\\",於是,就需要使用js中的replaceAll()函數,而在js中不存在replaceAll()函數,那么需要我們自定義,或者使用正則進行,具體如下:

 

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


免責聲明!

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



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