如何将日期值从 JSON 返回到 Google Visualization API

Posted

技术标签:

【中文标题】如何将日期值从 JSON 返回到 Google Visualization API【英文标题】:How to return a Date value from JSON to 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 中的类型日期不匹配。 【参考方案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)"

【讨论】:

以上是关于如何将日期值从 JSON 返回到 Google Visualization API的主要内容,如果未能解决你的问题,请参考以下文章

VBA将值从Google Analytics [在IE中打开]网站复制到Excel

如何将实时值从网站导入到 Google 表格?

如何将值从 v-select 传递给方法 - 它始终与默认值相同

如何将 JSON 值从一个 ViewController 传递到另一个

如何通过点击按钮将选定的 JSON 数据值从 uitableview 发送到服务器

如何将输入/选择值从网站保存到 XML/JSON 文件并使用 JavaScript 自动加载再次填充它们