Javascript 在Google图表中使用JSON创建数据表

Javascript 在Google图表中使用JSON创建数据表,javascript,html,json,google-visualization,Javascript,Html,Json,Google Visualization,我有一个硬编码的JSON对象,我正在将其传递给google.visualization.DataTable()以创建数据表对象,但似乎出现了一些问题。我在可视化api中发现了一个JS错误:“UncaughtTypeError:undefined不是函数”。以下是JSON数据: var jsonData = { cols: [ {id: 'date', label: 'Sample Date', type: 'date'}, {id: 'counterval

我有一个硬编码的JSON对象,我正在将其传递给google.visualization.DataTable()以创建数据表对象,但似乎出现了一些问题。我在可视化api中发现了一个JS错误:“UncaughtTypeError:undefined不是函数”。以下是JSON数据:

var jsonData = {
    cols: [
        {id: 'date', label: 'Sample Date', type: 'date'},
        {id: 'countervalue', label: 'Counter Value', type: 'number'}
    ],

    rows: [
        {c: [ {v: Date(2014, 4, 30, 10, 30, 0)}, {v: 2457.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 30, 15)}, {v: 2458.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 30, 30)}, {v: 2459.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 30, 45)}, {v: 2452.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 31, 0)}, {v: 2451.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 31, 15)}, {v: 2443.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 31, 30)}, {v: 2444.0} ] }
    ]
};
这就是它似乎正在爆炸的地方:

var data = google.visualization.DataTable(jsonData);
下面是解决方案的一部分:
代码工作正常,您只需更改:

var data = google.visualization.DataTable(jsonData);
致:


另外,JSFIDLE中从onLoad到noWrap的更改,如果不是
drawChart()
将不会执行。最后,当您修复它将抛出的google错误时:饼图的第一列应为string×

FYI类型,这是一个普通的JavaScript对象。您的问题与JSON无关,因此我建议您相应地更新它。此解决方案最终将调用返回JSON的web服务,但出于测试目的,我正在硬编码此值。所以我不打算删除这个问题的JSON相关性。编辑:这里有一个我尝试重新创建的链接:我尝试使用google.visualization.DataTable(JSON.stringify(jsonData)),但仍然得到相同的结果。请尝试使用下面提到的“新”构造函数谢谢帮助。PieChart是一个复制/粘贴错误,我实际上使用的是折线图。我仍然得到一个谷歌错误的未定义的不是一个函数,虽然。我更新了JSFIDLE以显示:@jcaine04的原因也非常相似!将所有的
v:Date(2014,4,30,10,30,45)}
更改为
v:newdate(2014,4,30,10,30,45)}
即可工作;)使用JSON字符串,您实际上希望日期是字符串:
“Date(2014,4,30,10,30,45)”
而不是
新日期(2014,4,30,10,30,45)
,因为日期对象不是有效的JSON。但这对于硬编码值是可以的。我需要动态地做。那我该怎么办呢?如何将JSON传递给google的map chart?@RohannG它不是硬编码的,JSON是动态的,因此图表将根据您的JSON进行更改。如果您是从服务器端生成json,只需使用@asgallant表示的日期:
“日期(2014,4,30,10,30,45)”
var data = new google.visualization.DataTable(jsonData);