Coldfusion 10 - 遍历从 SendGrid 返回的 JSON 结构

标签 coldfusion coldfusion-10 sendgrid

SendGrid 正在更改他们的事件 Hook 系统以将 JSON 发布到网页。当数据被反序列化时,它是一个数组集合,每个数组包含基于事件的可能不同的键。我需要根据事件处理条目并将其添加到我们的电子邮件跟踪数据库中,其中包含数据是数组或数组中的数组。

我正在寻找一种有效处理这些返回数组的方法。我最初的想法是用“事件”作为表达式来做一个 cfswitch。如果我知道一个 event=bounced,我就知道数组中还有哪些其他键。

虽然我确信这会奏效,但我想知道是否没有更好的方法或方法来代替为返回不同数组的 8 个不同事件创建开关/案例。

enter image description here

最佳答案

我会将我的代码划分到一个对象中,该对象可以确定应该/不应该做什么。所以你会得到这样的东西:

<cfcomponent displayname="SendGridProcessor">

    <cffunction name="processEvent" access="public" returntype="void" output="false">
        <cfargument name="EventData" type="struct" required="true" />

        <cfswitch expression="#Arguments.EventData.Event#">

            <cfcase value="processed">
                <cfset processEventProcessed( Arguments.EventData ) />
            </cfcase>

            <cfcase value="dropped">
                <cfset processEventDropped( Arguments.EventData ) />
            </cfcase>

        </cfswitch>

    </cffunction>

    <cffunction name="processEventProcessed" access="private" output="false" returntype="void">
        <cfargument name="EventData" type="struct" required="true" />
        <!--- do your processing --->
    </cffunction>

    <cffunction name="processEventDropped" access="private" output="false" returntype="void">
        <cfargument name="EventData" type="struct" required="true" />
        <!--- do your processing --->
    </cffunction>

</cfcomponent>

这使您可以拥有一个可以在循环遍历事件时调用的方法,以及一种根据从 SendGrid 传递的事件分离逻辑的简单方法。

关于Coldfusion 10 - 遍历从 SendGrid 返回的 JSON 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20354715/

相关文章:

javascript - 如何在javascript中使模块异步

AzureFunctions 绑定(bind)到 SendGrid

c# - Azure SendGrid 提供的授权无效、已过期或已撤销

coldfusion - 使用 CFIMAP 预览电子邮件而不标记 SEEN 标志?

java - 我可以将 .swf 文件转换为图像格式吗?

multithreading - ColdFusion 动态线程名称

authentication - ColdFusion 10 Active Directory 身份验证

coldfusion - 试图将数据插入查询中的特定列和行

coldfusion - 如何从 cfscript 函数返回对象列表

正则表达式前缀环视在coldfusion 10中不起作用