0

我目前正在使用我在 github 上找到的 nodejs lambda 函数将 cloudwatch 警报转发给 slack,但是,当它从我们的一个客户数据中心收到自定义警报时,该字符串不是 JSON 格式,因此它不会打印警报。

我正在考虑重写 handleCatchAll() 函数来处理字符串并将其转发到当前格式的 slack,但在识别对象时遇到问题。

下面是我要编辑的代码,我需要编写一个 if 语句来识别对象,比如“如果 JSON.stringify 失败,然后在没有 JSON.stringify 的情况下呈现消息并将其值输入到‘description’”

变量描述 = ""

if ()
{
  else if () 
  {
    for(key in message) {

        var renderedMessage = typeof message[key] === 'object'
                            ? JSON.stringify(message[key])
                            : message[key]

        description = description + "\n" + key + ": " + renderedMessage
    }
  }
}
4

1 回答 1

1

如果文本是有效的 JSON 对象,您可以使用此脚本将文本输入转换为 json,否则保留原始文本。

const isJSON = str => {
    try {
        return (JSON.parse(str) && !!str);
    } catch (e) {
        return false;
    }
}
const regulizeRequestBody = body => isJSON(body) ? JSON.parse(body) : body;
于 2019-08-29T10:28:13.217 回答