返回json數據的Eval格式 ”invalid label” 錯 與 JSON.parse

文章來自:http://www.blogjava.net/xskowscut/articles/277283.html

我初學JSON,按照官方說明,在json2.js中有parse和stringify兩個方法,parse用於從一個字符串中解析出json對象。還是舉個例子說明:

1 var  str  =   " {'name':'x', 'age':23} " ;
2 JSON.parse(str);

原來認爲這肯定能夠正確執行的,但是無論怎樣寫這個對象string,都拋出異常。後來發現原來是 " ' 導致的錯誤。如果改爲:

1    var  str = ' { " name " : " xskow " " age " : 23 } ';
2 JSON.parse(str);

就OK了!
還有就是我們寫對象的時候一般可以{name:'xskow'},即屬性名可以不用雙引號括起來,但如果使用JSON.parse的話,每個屬性都必須用雙引號括起來,否則也會拋出異常。

stringify方法就是和parse功能相反,但是一般對自定義對象也沒有異常產生,這裏就不說了

 

 

文章來自:http://hi.baidu.com/91youqu/blog/item/ad3e7b1e9ee26dc2a78669c0.html

比如,如下的代碼:

function handle_success(response){
       var json = eval(response); // response = "{'foo' : 'bar'}";
  }

瀏覽器會報,invalid label錯, 這是因爲, eval會嘗試將你的response解釋爲一個label, 當你在腳本中直接寫:

<script>
  {'foo' : 'bar'};
</script>

會報錯的原理是一樣的.

解決辦法有倆個:

var json = eval('(' + response + ')'); // response = "{'foo' : 'bar'}";

或者

eval('var json = ' + response); // response = "{'foo' : 'bar'}";
       //json is available now
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章