2010-09-03 73 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 [小时,分,秒[,毫秒]]),其中一天之后的所有内容都是可选的,并且月份是基于零的。“