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

如何解析AWS SES SDK getIdentityVerificationAttributes在JS中返回的对象?

调用AWS SES getIdentityVerificationAttributes接口的解析问题

我调用AWS SES的getIdentityVerificationAttributes接口时,在解析返回对象时遇到了一堆问题:

  • 官方说明返回的是map,但使用.get()方法时报错“.get()不是函数”
  • 尝试用Object.entries处理仍无法获取VerificationStatus
  • 执行JSON.Parse(identityVerify)时报错“ERROR SyntaxError: Unexpected token o in JSON at position 1”

我的JavaScript代码如下:

const isEmailAWSVerified = async (Email) => {
    try {
        console.log('[isEmailAWSVerified] Email: ', Email);

   /*
    data = {
        VerificationAttributes: {
        "myEmail@example.com": {
        VerificationStatus: "Success", // Could be "Pending", "Failed"...
        VerificationToken: "EXAMPLE3VYb9EDI2nTOQRi/Tf6MI/6bD6THIGiP1MVY="
        }
      }
    }
   */

        let identityVerify= 
            await SES.getIdentityVerificationAttributes(
                {Identities: [`${Email}`]})
                .promise();
        
        console.log('[isEmailAWSVerified] - identityVerify', identityVerify);
        const parsedResponse = JSON.Parse(identityVerify);

        const ret = Object.entries(identityVerify.VerificationAttributes).map(([key, val]) => {
            let status = '';
            if (key === Email) {
                const tmp = JSON.Parse(val);
                console.log('[isEmailAWSVerified -- Inside Map] tmp: ', tmp);
                // status = Object.entries(val).map(([key, val]) => {
                //     return val;
                // });
                return status;
            }
            return '';
          })

        console.log('[isEmailAWSVerified] - ret', ret);
        
        return ret === 'Success' ? 1 : 0;
    } catch ( err) {
        console.log('[isEmailAWSVerified] - ERROR', err);
        return 0;
    }
}

我找到了一段Python示例代码,想把它转换成JavaScript代码,示例代码如下:

try:
    response = self.ses_client.get_identity_verification_attributes(
        Identities=[identity])
    status = response['VerificationAttributes'].get(
        identity, {'VerificationStatus': 'NotFound'})['VerificationStatus']
    logger.info("Got status of %s for %s.", status, identity)
except ClientError:
    logger.exception("Couldn't get status for %s.", identity)
    raise
else:
    return status

问题分析

  1. JSON.Parse报错:identityVerify本身就是JavaScript对象,不是JSON字符串,无需调用JSON.parse()(注意JS里是小写开头的parse,你代码里写的JSON.Parse是语法错误)。
  2. .get()报错:AWS返回的是普通JS对象,不是Map类型,普通对象没有.get()方法,直接用属性访问即可。
  3. 冗余遍历:你只查询了单个邮箱,不需要用Object.entries遍历所有属性,直接通过邮箱键访问目标数据即可。

转换后的JavaScript代码

const isEmailAWSVerified = async (Email) => {
    try {
        console.log('[isEmailAWSVerified] Email: ', Email);

        const identityVerify = await SES.getIdentityVerificationAttributes({
            Identities: [Email]
        }).promise();
        
        // 直接获取目标邮箱的验证属性,设置兜底值避免找不到时报错
        const verificationAttr = identityVerify.VerificationAttributes[Email] || { VerificationStatus: 'NotFound' };
        const status = verificationAttr.VerificationStatus;

        console.log(`[isEmailAWSVerified] - 邮箱${Email}的验证状态: ${status}`);
        
        return status === 'Success' ? 1 : 0;
    } catch (err) {
        console.log('[isEmailAWSVerified] - ERROR', err);
        return 0;
    }
}

代码说明

  • 移除了多余的JSON.parse调用,直接操作返回的JS对象
  • 用对象属性访问identityVerify.VerificationAttributes[Email]获取目标数据,通过||设置兜底值,处理邮箱未被记录的情况
  • 直接提取VerificationStatus,逻辑简洁,无需遍历所有属性
  • 修正了原代码中JSON.Parse的大小写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 03:57:14