閱讀34 返回首頁    go 技術社區[雲棲]


javascript中eval解析JSON字符串


先來看一個JSON字符串集

 

var data="
{
root:
[
{name:'1',value:'0'},
{name:'6101',value:'A城市'},
{name:'6102',value:'B城市'},
{name:'6103',value:'C城市'},
{name:'6104',value:'D城市'},
{name:'6105',value:'E城市'}

]
}";

 

怎麼將上述json字符串轉化為json對象呢?


使用eval()這個內置函數,該方式也適合以普通js方式獲取json對象。

 

var dataObj=eval("("+data+")");
alert(dataObj.root.length);
$.each(dataObj.root,fucntion(idx,item){
        if(idx==0){
              return true; 
        }
       alert("name:"+item.name+",value:"+item.value);
});


為什麼eval這裏要添加("("+data+")") ?

由於json是以{ }的方式來開始以及結束的,在eval中會被當成一個語句塊來處理,故必須強製將它轉換成一種表達式。

加上圓括號是使eval函數在處理時強製將括號內的表達式(expression)轉化為對象而不作為語句(statement)來執行。

若不加外層的括號,eval會將大括號識別為js代碼塊的開始和結束標記,{ }將會被認為執行了一句空語句。

 

alert(eval("{}")
結果 undefined

 

alert(eval("({})")
結果 object[Object]


來看看eval其他用法

eval("alert('xy')");

等價於alert("xy")

 

var msg = "xy";

eval("alert(msg)");

等價於alert("xy")

 

eval("x=10;y=20;document.write(x*y)")

結果 200

 

eval就相當於一個js解析器,很牛哦

 

原帖地址:https://www.cnblogs.com/myjavawork/archive/2011/03/10/1979279.html

 

 

最後更新:2017-04-02 16:48:08

  上一篇:go Android自定義Menu(TabMenu)
  下一篇:go android怎樣調用@hide和internal API