前端獲取後臺json過程由於轉義字元出現的問題
資料庫儲存資訊,特別是什麼屬性名稱,由使用者手動輸入,通常會包含有一些特殊字元,比如說雙引號,單引號,轉義字元\等
取資料將其顯示在頁面上的時候,特別是當我們把這些資訊以json的格式返回給頁面,前端外掛拿著json來載入一些結果,比如一棵樹。
由於json格式是{"A":"XXXX"}的形式
那如果XXXX包含了雙引號,單引號或者轉義字元,那麼從資料庫獲取的資料如果是想自己在後臺拼湊成一個json字串返回頁面去載入的話肯定需要先處理一下,不然就會出現json解析失敗的錯誤。
如果資料庫儲存的是雙引號。那麼後臺取到的資料應該是\",所以我們要將這兩個字元替換成\\\"
但是這裡要注意,因為你是要將內容拼接到json字串裡,也就是說變成字串的時候,也會將轉義字元給轉義,那麼我們替換的那些工作就沒用了
因此,這裡需要再加一層轉義:\\\" => \\\\\\\" 也就是每個字元前面都加個轉義字元一遍。
所以我們拼接成的json就是"{\"A\":\"\\\\\\\"\"}";
將json字串傳遞到前端,前端首先獲取字串的內容會轉義一次:{"A":"\\\""}
然後將字串轉為json給前端元件使用。這時又轉義一次:{"A":"\""}
最後前端元件要顯示json的A欄位"\""(它是個字串),展示在頁面上又轉義了一次,於是拿到了雙引號 "
以上就是前端獲取後臺json字串的過程。