1. 程式人生 > >javascript中eval解析JSON字串

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

 

 

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述