Json物件與Json字串互轉(4種轉換方式)
阿新 • • 發佈:2019-01-10
1.jQuery外掛支援的轉換方式:
$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字串轉換成json物件
2.瀏覽器支援的轉換方式(Firefox,chrome,opera,safari,ie9,ie8)等瀏覽器:
JSON.parse(jsonstr); //可以將json字串轉換成json物件
JSON.stringify(jsonobj); //可以將json物件轉換成json對符串
注:ie8(相容模式),ie7和ie6沒有JSON物件,推薦採用JSON官方的方式,引入json.js。
3.Javascript支援的轉換方式:
eval('(' + jsonstr + ')'); //可以將json字串轉換成json物件,注意需要在json字元外包裹一對小括號
注:ie8(相容模式),ie7和ie6也可以使用eval()將字串轉為JSON物件,但不推薦這些方式,這種方式不安全eval會執行json串中的表示式。
4.JSON官方的轉換方式:
注:JSON.parse()與eval()的區別
JSON.parse()之可以解析json格式的資料,並且會對要解析的字串進行格式檢查,如果格式不正確則不進行解析,而eval()則可以解析任何字串,eval是不安全的。
比如下面的字串:
var str = 'alert(1000.toString())';
eval(str);
JSON.parse(str);
用eval可以解析,並且會彈出對話方塊,而用JSON.parse()則解析不了。 其實alert並沒有什麼壞處,可怕的是如果用惡意使用者在json字串中注入了向頁面插入木馬連結的指令碼,用eval也是可以操作的,而用JSON.parse()則不必擔心這個問題。