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

从JSON内变量取值触发TypeError,寻求原因排查与解决

排查StackerFlow函数的TypeError问题

先看你贴出的代码,第一个明显的问题是对象定义的语法错误:在test对象里,caseJSON属性的末尾缺少了逗号,这会直接导致JavaScript解析失败,触发语法错误。先把这个问题修复:

function stackerFlow (d) {
  var blogspotter = getAllowedIntervals();
  var test = {
    "caseJSON" : {"interval":{"start_month":12,"start_year":2014,"end_month":12,"end_year":2017}}, // 补上属性间的逗号
    "caseVAR" : blogspotter
  };
  Logger.log(blogspotter);
  // 后续逻辑代码...
}

如果补完逗号还是报错,那大概率是getAllowedIntervals()返回的不是JSON对象,而是JSON格式的字符串。虽然Logger.log显示内容是有效JSON,但字符串本身没有interval这类属性,直接访问自然会触发TypeError。

这时候你需要把返回的字符串解析成对象,修改获取blogspotter的代码:

var blogspotter = JSON.parse(getAllowedIntervals());

这样blogspotter就会变成和test.caseJSON结构完全一致的对象,再访问test.caseVAR.interval.start_month这类属性就不会报错了。

另外,你可以用Logger.log(typeof blogspotter)确认返回值类型:如果输出是string,就说明确实需要解析;如果是object,可以再排查是否返回的对象嵌套层级和预期不一致(比如少了一层interval包裹)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:14:37