2012-11-05 94 views
1

我正在使用jqPlot創建圖表。圖表的數據點來自使用GSON構建的JSON對象。圖表數據點被建立在一個JavaScript數組的格式,所以,其保持所述數據的Java對象發送到客戶端存儲數據如下:將JSON字符串轉換爲JavaScript中的陣列

String chartDataPoints = "[[1352128861000, 0.0], [1352128801000, 0.0], [1352128741000, 0.0], [1352128681000, 0.0], [1352128621000, 0.0],...More chart points in this format ,[[x0,y0], [x1,y2]...]]"; 

的X點是日期。

是否可以直接從JSON對象傳遞這些數據,就好像它是一個JavaScript數組?目前MyJsonObject.chartDataPoints被視爲一個字符串,等等jqPlot($ .jqplot( 'chart1',MyJsonObject.chartDataPoints)不繪製任何

+0

應該指出的是,JSON的定義是「javascript數組或對象的字符串表示」。 – slebetman

回答

7

一種選擇是使用eval

var arr = eval('(' + json_text + ')'); 

以上是做到這一點的最簡單和最廣泛支持的方式,但是如果您信任源,因爲它將執行任何JavaScript代碼,您應該只使用eval

某些瀏覽器具有本機JSON解析器,在這種情況下,您可以執行如下:

var arr = JSON.parse(json_text); 

第三方庫如jQuery也可以提供用於處理JSON的函數。在jQuery中,你可以做到以下幾點:

var arr = jQuery.parseJSON(json_text); 

底部的兩個方法(使用解析器)是首選,因爲它們提供一定程度的保護。

+0

添加到MitchS的'(+1)答案,IE6和IE7是沒有定義JSON對象的兩個瀏覽器。在這種情況下,您可以使用Crockford的[json2腳本](https://github.com/douglascrockford/JSON-js/blob/master/json2.js)來構建JSON對象。 – cbayram

+0

我在發佈之前嘗試過JQuery.parseJSON ...並且我得到了'SyntaxError:JSON.parse:JSON數據後意外的非空白字符' – sardo

+0

你能顯示你的代碼嗎?一個jsFiddle會很有用。 –

0

如果刪除引號,那是一個有效的數組聲明。然後,您可以循環訪問將x點轉換爲日期的數組。

+0

如何刪除MyJsonObject.chartDataPoints中的引號,以便得到[[x0,y0],[x1,y1] .... [xn,yn]],[[X0,Y0],[X1,Y1] ... [XN,YN]? – sardo

+0

@sardo數據是如何到達那裏的,它是從服務器下載的javascript文件(通過類似於php的插入方式),還是存儲在變量中? –

+0

客戶端發出Ajax請求。服務器返回一個JSON對象,其中chartDataPoints是變量的名稱,圖表數據包含在該值中。 – sardo

0

看看:https://github.com/douglascrockford/JSON-js

有解析字符串轉換成一個對象,這是一個「安全」的方法的方法 - 您可以直接在你的JavaScript做一個eval(chartDataPoints),但它總是建議您解析它通過一個JSON引擎來防止在那裏發生一些不好的事情!

+0

謝謝你會看看 – sardo