【问题标题】:How to return a Date value from JSON to Google Visualization API如何将日期值从 JSON 返回到 Google Visualization API
【发布时间】:2011-04-07 23:28:27
【问题描述】:

有没有办法在 Google Visualization API 中从 JSON 中检索日期值? 这是playground 的代码片段请将下面的代码复制到其中

当您运行代码时,您不会得到任何结果。您应该从我用注释标记的日期值中删除引号以检索结果。

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});
}

【问题讨论】:

  • 哥们,我也有同样的问题!
  • 我知道这是一个很老的问题,但我有同样的问题,你可能会有所帮助。这是我的 json [["Date(2015,6,1)",9,218.0],["Date(2015,7,1)",10,497.5],["Date(2015,8,1)",13,317.5],["Date(2015,9,1)",29,1572.0],["Date(2015,10,1)",34,480.0],["Date(2015,11,1)",20,387.0],["Date(2016,0,1)",34,836.0],["Date(2016,1,1)",29,957.5],["Date(2016,2,1)",2,1250.0],["Date(2016,3,1)",2,793.5],["Date(2016,10,1)",3,801.0],["Date(2016,11,1)",2,756.5],["Date(2017,1,1)",2,410.0]],我得到未捕获的错误:类型不匹配。 Value Date(2015,6,1) 与列索引 0 中的类型日期不匹配。

标签: json date datatable google-visualization


【解决方案1】:

我想引用在您的 sn-p "new Date(2010, 3, 28") 中的位置不正确 改写"new Date(2010, 3, 28)"

Json 格式不接受 javascript 对象,因此服务器返回一个字符串。 JSON 只知道数字、布尔常量、字符串、null、向量和“对象”(更像是一个字典)。

我想您必须对返回的字符串执行 eval()(不要忘记检查输入)。

另一种选择是使用正则表达式来提取像/new Date\((\d+),(\d+),(\d+)\)/ 这样的字段。

【讨论】:

  • eval() 是解决方案之一。在阅读您的答案 VGE 之前,我发现的是迭代日期并创建一个新的 Date(data.row[i].c[0].v) (日期是第一个系列)。我当然将日期格式化为字符串,因此 new Date() 可以理解它。
  • 抱歉,Marcel,我之前没有看到您的评论。 EVAL 和对整个数据的操作都不是优雅的解决方案。
  • @VGE 感谢您的指出报价。这是一个简单的错字。我更新了问题
【解决方案2】:

我自己也遇到了这个问题,所以我想我会粘贴来自 google api 文档的答案,位于此处 http://code.google.com/apis/chart/interactive/docs/dev/implementing_data_source.html#jsondatatable

“JSON 不支持 JavaScript 日期值(例如,”new Date(2008,1,28,0,31,26)”;API 实现支持。但是,API 现在支持自定义的有效 JSON 表示日期为以下格式的字符串:Date(year,month,day[,hour,minute,second[,millisecond]]) 其中 day 之后的所有内容都是可选的,月份从零开始。"

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,上面的解决方案不起作用。在搜索了几个小时后,我发现了以下帖子并且其中的解决方案有效。

    https://groups.google.com/forum/#!msg/google-visualization-api/SCDuNjuo7xo/ofAOTVbZg7YJ

    不要在 json 字符串中包含“new”,所以它只是: v:"日期(2009, 9, 28)"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-18
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多