簡體   English   中英

無法將 nodejs 變量傳遞到 JSON 字符串中

[英]Unable to pass nodejs variable into JSON string

如何將sns_NameSpace變量傳遞到payload 我收到錯誤Unrecognized token sns_NameSpace 我嘗試使用 JSON 進行字符串化,但仍然出現相同的錯誤。

Error:

   "errorMessage": "Could not parse request body into json: Could not parse payload into json: Unrecognized token 'sns_NameSpace': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')\n at [Source: (byte[])\"{ \"Host\": sns_NameSpace, \"Key\": sns_key, \"Value\": \"1\"}\"; line: 1, column: 25]",

code:

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

  var params = {
    FunctionName: 'zabbixPy', // the lambda function we are going to invoke
    InvocationType: 'RequestResponse',
    LogType: 'Tail',
    Payload: '{ "Host": sns_NameSpace, "Key": sns_key, "Value": "1"}'
  };

假設您有一個有效的字符串,您應該能夠為此使用模板文字

前任:

var params = {
    ...
    Payload: `{ "Host": ${sns_NameSpace}, "Key": ${sns_key}, "Value": "1"}`
};

另外,我建議使用不同的變量名稱而不是定義,然后重新定義sns_nameSpace

這個問題應該重命名為“如何連接變量和字符串?”。 問題出在您的“有效負載”線上。

問題:按字面解釋變量

這是不起作用的字符串:

'{ "Host": sns_NameSpace, "Key": sns_key, "Value": "1"}'

正如您從錯誤消息中看到的, sns_NameSpace沒有被替換,因此被逐字解釋為無效的 JSON 令牌。

解決方案1:字符串連接

可以使用字符串連接運算符( + )連接字符串

'{ "Host": ' + sns_NameSpace + ', "Key": ' + sns_key + ', "Value": "1"}'

解決方案2:模板字符串

或者可以使用模板字符串這樣:

`{ "Host": ${sns_NameSpace}, "Key": ${sns_key}, "Value": "1"}`

請注意模板字符串使用`(反引號),而不是'(單引號)

在 JS 中構建對象然后將其字符串化會更直接,而不是將單個部分字符串化並在字符串中包含文字 JSON 片段:

var sns_NameSpace = sns.Trigger.Namespace;
var sns_NameSpace = JSON.stringify(sns_NameSpace.replace("/", "_"));
var sns_key = JSON.stringify(sns_ApiId + '_' + sns_MetricName);
var params = {
  FunctionName: 'zabbixPy', // the lambda function we are going to invoke
  InvocationType: 'RequestResponse',
  LogType: 'Tail',
  Payload: JSON.stringify({
    Host: sns_NameSpace.replace('/', '_'),
    Key: sns_ApiId + '_' + sns_MetricName,
    Value: 1
  })
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM