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

Node.js无法将变量传入JSON字符串报Unrecognized token错误如何解决

错误原因

你给Payload赋值的是固定字符串,字符串内部的sns_NameSpace、sns_key不会被识别为JS变量,而是直接作为JSON内容提交。JSON规范要求字符串类型的值必须用双引号包裹,你提交的内容里sns_NameSpace没有引号,自然会被判定为非法token。
另外你提前给单个变量做JSON.stringify没有必要,反而容易产生多余的转义问题。

正确写法(推荐)

先构造Payload对应的普通JS对象,再整体序列化得到JSON字符串,完全不需要手动处理引号和转义:

var sns_NameSpace = sns.Trigger.Namespace.replace("/", "_");
var sns_key = sns_ApiId + '_' + sns_MetricName;

var params = {
  FunctionName: 'zabbixPy', // 要调用的lambda函数名
  InvocationType: 'RequestResponse',
  LogType: 'Tail',
  // 先构造对象再整体序列化
  Payload: JSON.stringify({
    Host: sns_NameSpace,
    Key: sns_key,
    Value: "1"
  })
};

不推荐的拼接字符串写法(仅作原理说明)

如果一定要手动拼字符串,需要把变量值拼接到字符串里,注意变量本身提前做了stringify会自带引号,所以可以这么写:

// 仅作演示,不推荐使用,容易出现转义错误
Payload: '{ "Host": ' + sns_NameSpace + ', "Key": ' + sns_key + ', "Value": "1"}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:45:04