简体   繁体   English

如何在 JavaScript 中解析从 AWS SES 开发工具包返回的对象?

[英]How do I parse an object coming back from AWS SES SDK in JavaScript?

I'm trying to use AWS SES getIdentityVerificationAttributes via code, and I'm having trouble parsing the object coming back.我正在尝试通过代码使用 AWS SES getIdentityVerificationAttributes,但无法解析返回的对象。

I've made a mess out of the code below, but AWS says it is coming back as a map, so I tried doing a .get() and it threw an error that .get() is not a function.我把下面的代码弄得一团糟,但 AWS 说它会以地图的形式返回,所以我尝试执行 .get() 并引发错误,即 .get() 不是函数。 So I tried working with Object.entries but still I can't find a good way of returning the VerificationStatus of this object.所以我尝试使用 Object.entries 但我仍然找不到返回该对象的 VerificationStatus 的好方法。 I expected JSON.Parse(identityVerify) to work, but it doesn't (getting "ERROR SyntaxError: Unexpected token o in JSON at position 1").我希望 JSON.Parse(identityVerify) 可以工作,但它没有(在位置 1 处得到“错误语法错误:JSON 中的意外标记 o”)。

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;
    }
}

I found a good example in PHP -- How can I translate that to JS?我在 PHP 中找到了一个很好的例子——我怎样才能把它翻译成 JS?

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

Actually, we don't need JSON.Parse , because is an object already.实际上,我们不需要JSON.Parse ,因为它已经是一个对象。 We can get verification status just by using const status = identityVerify.VerificationAttributes[ ${Email} ].VerificationStatus;我们可以通过使用const status = identityVerify.VerificationAttributes[ ${Email} ].VerificationStatus;来获得验证状态。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM