You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Charts含new Date()的数据源触发JSON.parse报错问题

问题结论

该问题不属于官方文档疏漏,是对文档说明适用场景的误解导致的。

核心原因

标准JSON语法本身不支持new Date()这类JavaScript表达式/构造函数写法,仅支持null、布尔值、数字、字符串、数组、纯对象六种数据类型。
官方文档提到的new Date()可作为datetime类型值,仅适用于前端JavaScript代码中直接构造DataTable时传入Date实例的场景,并不要求远程JSON数据源直接包含new Date()字符串。你触发JSON.parse语法错误的直接原因,就是远程返回的JSON文件里写入了不符合JSON规范的new Date()字符串。

修复方案
  • 调整远程数据源格式:不要返回new Date(xxx)字符串,统一返回可序列化的时间格式,优先选择Unix毫秒级时间戳(数字类型)或者ISO 8601规范的时间字符串(比如"2024-06-15T14:30:00Z")。
  • 前端解析完JSON后手动转换日期:在将数据传入Google Charts构造DataTable之前,遍历数据把时间字段转为Date实例即可,示例代码如下:
// 示例:远程返回的原始数据结构为[[时间戳, 访问量, 转化量], ...]
const rawChartData = await fetch('/your-data-source').then(res => res.json());
const processedData = rawChartData.map(row => [
  new Date(row[0]), // 手动转换为Date实例
  row[1],
  row[2]
]);
// 后续正常将processedData传入Google Charts接口即可
  • 仅内网可信场景下可选用替代方案:如果无法调整数据源格式,可以不用JSON.parse解析,改用eval()或者new Function()解析数据源内容,该方案存在XSS安全风险,公网场景禁止使用。

内容的提问来源于stack exchange,提问作者Cagy79

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:45:00