2010-09-03 22 views
10

有沒有辦法在Google Visualization API中從JSON中檢索日期值? 這裏是snipplet爲playground請在下面的代碼複製進去如何將日期值從JSON返回到Google Visualization API

當你運行你不會有任何結果的代碼。您應該從標記爲註釋的日期值中刪除引號以便檢索結果。

function drawVisualization() { 
var JSONObject = { 
cols: 
    [ 
     {id: 'header1', label: 'Header1', type: 'string'}, 
     {id: 'header2', label: 'Header2', type: 'date'} 
    ], 
rows: 
    [ 
     { 
      c: 
       [ 
        {v: 'Value1'}, 
        {v: "new Date(2010, 3, 28)"} // <= This is the format I receive from WebService 
       ] 
     }, 
     { 
      c: 
       [ 
        {v: 'Value2'}, 
        {v: new Date(2010, 3, 28)} // <=This is the format Google API accepts 
       ] 
     } 
    ] 
}; 

var data = new google.visualization.DataTable(JSONObject, 0.5); 

visualization = new google.visualization.Table(document.getElementById('table')); 
visualization.draw(data, {'allowHtml': true}); 
} 
+0

傢伙我有同樣的問題! – 2010-12-21 09:46:58

+0

我知道這是一個很老的問題,但我有同樣的問題,你可能會幫助。這是我的json [[「Date(2015,6,1)」,9,218.0],[「Date(2015,7,1)」,10,497.5],[「Date(2015,8,1)」,13,317.5] [ 「日期(2015,9,1)」,29,1572.0],[ 「日期(2015,10,1)」,34,480.0],[ 「日期(2015,11,1)」,20,387.0],[」日期(2016,0,1) 「34,83​​6.0],[ 」日期(2016,1,1)「,29,957.5],[ 」日期(2016,2,1)「,2,1250.0],[」 日期(2016 ,3,1) 「2,793.5],[ 」日期(2016,10,1)「,3,801.0],[ 」日期(2016,11,1)「,2,756.5],[」 日期(2017,1,1) 「,2,410.0]]'我得到未捕獲的錯誤:類型不匹配。值日期(2015,6,1)與列索引0中的類型日期不匹配。 – 2017-05-22 18:45:00

回答

0

我想,報價是不是在正確的地方在你的代碼片段"new Date(2010, 3, 28") 寫,而不是"new Date(2010, 3, 28)"

JSON格式不接受JavaScript對象,以便在服務器返回一個字符串。 JSON只知道數字,布爾常量,字符串,空值,矢量和'對象'(更多的是一個字典)。

我想你必須執行返回字符串的eval()(不要忘記檢查輸入)。

另一種選擇是使用正則表達式來提取像/new Date\((\d+),(\d+),(\d+)\)/這樣的字段將工作。

+1

eval()是解決方案之一。在閱讀你的答案之前,我發現VGE是迭代日期並創建一個新的Date(data.row [i] .c [0] .v)(日期是第一個系列)。我當然有字符串格式的日期,所以新的Date()理解它。 – 2010-12-25 12:05:11

+0

對不起Marcel,我以前沒有看到您的評論。 EVAL和操縱整個數據都不是優雅的解決方案。 – cilerler 2011-06-15 12:39:51

+0

@VGE感謝您提供報價。這是一個簡單的錯字。我更新了這個問題 – cilerler 2012-03-05 07:46:04

9

我只是碰到了這個問題我自己,所以我想我會粘貼在谷歌API文檔的答案,設在這裏http://code.google.com/apis/chart/interactive/docs/dev/implementing_data_source.html#jsondatatable

「JSON不支持JavaScript的日期值(例如,」新的日期( 2008,1,28,0,31,26)「; API實現確實如此,但API現在支持以下格式的日期的自定義有效JSON表示形式:Date(year,month,day [小時,分,秒[,毫秒]]),其中一天之後的所有內容都是可選的,並且月份是基於零的。「

相關問題