2012-03-28 158 views
2

我需要一些關於JavaScript的幫助。我做了一個ajax調用點擊按鈕,它返回下面的String,這是使用GSON生成的(基本上它是一個JSON對象)。如何將JSONString轉換爲Javascript對象

{ 
    "chart":{ 
     "renderTo":"container", 
     "type":"bar" 
    }, 
    "title":{ 
     "text":"Engagement Per Vendor Per GBP" 
    }, 
    "subtitle":{ 
     "text":"ASPT" 
    }, 
    "xAxis":{ 
     "categories":[ 
     "A", 
     "B", 
     "C", 
     "D" 
     ], 
     "title":{ 
     "text":"Engagement Per Vendor Per GBP" 
     } 
    }, 
    "yAxis":{ 
     "min":0, 
     "title":{ 
     "text":"Count", 
     "align":"high" 
     } 
    }, 
    "plotOptions":{ 
     "bar":{ 
     "dataLabels":{ 
      "enabled":true 
     } 
     } 
    }, 
    "legend":{ 
     "layout":"vertical", 
     "align":"right", 
     "verticalAlign":"bottom", 
     "x":-100, 
     "y":100, 
     "floating":true, 
     "borderWidth":1, 
     "backgroundColor":"#FFFFFF", 
     "shadow":true 
    }, 
    "credits":{ 
     "enabled":true 
    }, 
    "series":[ 
     { 
     "name":"ABC", 
     "data":[ 
      10, 
      20, 
      20, 
      30 
     ] 
     }, 
     { 
     "name":"DEF", 
     "data":[ 
      10, 
      20, 
      30, 
      40 
     ] 
     }, 
     { 
     "name":"GHIJ", 
     "data":[ 
      20, 
      30, 
      40, 
      10 
     ] 
     }, 
     { 
     "name":"KLMN", 
     "data":[ 
      10, 
      40, 
      20, 
      30 
     ] 
     } 
    ] 
} 

當我得到這些數據在我的JavaScript。 我試圖使用下面的語句

var jsonObj = eval(xmlHttp.responseText); 

xmlHttp.responseText將對象轉換爲JSON具有以下字符串

{"chart":{"renderTo":"container","type":"bar"},"title":{"text":"Engagement Per Vendor Per GBP"},"subtitle":{"text":"ASPT"},"xAxis":{"categories":["A","B","C","D"],"title":{"text":"Engagement Per Vendor Per GBP"}},"yAxis":{"min":0,"title":{"text":"Count","align":"high"}},"plotOptions":{"bar":{"dataLabels":{"enabled":true}}},"legend":{"layout":"vertical","align":"right","verticalAlign":"bottom","x":-100,"y":100,"floating":true,"borderWidth":1,"backgroundColor":"#FFFFFF","shadow":true},"credits":{"enabled":true},"series":[{"name":"ABC","data":[10,20,20,30]},{"name":"DEF","data":[10,20,30,40]},{"name":"GHIJ","data":[20,30,40,10]},{"name":"KLMN","data":[10,40,20,30]}]} 

當我嘗試運行JSP,它停在var jsonObj = eval(xmlHttp.responseText);

在很多時候我已經完成了這個工作,但這次數據是不同的。 JSON字符串由GSON API的JSON方法創建。

除非我把它放入JSON對象中,否則我將無法做任何事情。任何對此的幫助都是可以理解的。

問候, Senny

回答

3

這是一個有效的JSON格式,因此使用時JSON.parse(xmlHttp.responseText)可能(IE8 +,火狐,Chrome,歌劇,Safari ...),並使用eval('(' + xmlHttp.responseText + ')')爲IE6-7,注意,您應該使用eval當添加一個額外的一對托架的():

if (JSON) return JSON.parse(xmlHttp.responseText); 
else return eval('(' + xmlHttp.responseText + ')'); 
+0

+1 JSON.parse的建議(我希望我能同時-1,而不是+0,因爲*不建議*使用庫在舊版瀏覽器中修補/填充JSON.parse) – 2012-03-28 09:12:01

+0

JSON解析器將只識別JSON文本,拒絕所有腳本。在提供本機JSON支持的瀏覽器中,JSON解析器也比eval快得多。 – antonjs 2012-03-28 09:15:48