34
技術社區[雲棲]
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