【js】JSON.parse() eval() 使用場景

偶然一次,用JSON.parse()轉(zhuǎn)json字符串時報錯了...,查了資料才發(fā)現(xiàn)可以用eval()字符串轉(zhuǎn)化為數(shù)組,試了一下是可以轉(zhuǎn)。
JSON.parse()有幾個前置的使用條件:

1. 對象和數(shù)組:
  屬性名稱必須用雙引號包裹;
  最后一個屬性后面不能有逗號。
2.數(shù)值:
前導0不能使用(在 JSON.stringify 中將會被忽略,在 JSON.parse 會拋出錯誤);
小數(shù)點后面至少有一個數(shù)字。
3.字符串:
只有有限的字符能夠被轉(zhuǎn)義;
不允許某些控制字符;但允許使用Unicode 行分隔符 (U+2028) 和段落分隔符 (U+2029) ;
字符串必須用雙引號括起來。

以上,有時候后端傳的JSON字符串數(shù)據(jù)不規(guī)范,用JSON.parse()就會報錯;這時候可以用eval();但如果字符串中有網(wǎng)址,eval()轉(zhuǎn)的時候會直接跳轉(zhuǎn)到網(wǎng)址,這點不安全,不適合用eval(),eval()不應該去轉(zhuǎn)外部第三方數(shù)據(jù),存在安全問題

另外eval()轉(zhuǎn)對象字符串時,外層要加小括號,這是因為對象字符串是{}開始結(jié)尾的,js會誤認為代碼塊處理掉,如果不加代碼會直接報錯??!

參考文章鏈接:https://www.cnblogs.com/lovesong/p/6036650.html

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容