javascript中eval解析JSON字串
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
先來看一個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解析器,很牛哦
原帖地址:http://www.cnblogs.com/myjavawork/archive/2011/03/10/1979279.html