1. 程式人生 > >Json物件與Json字串互轉(4種轉換方式)

Json物件與Json字串互轉(4種轉換方式)

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()則不必擔心這個問題。