我正在使用Classic ASP和ASPJSON(http://www.aspjson.com/)来尝试循环通过Mandrill Webhook返回的JSON测试数据。
这是示例JSON数据 - 我意识到第二个块与第一个块相同,但我需要使用它,因为当我在实时系统上执行此操作时,webhook数据将在单个JSON文件中批量返回/ post。
{
"event":"hard_bounce",
"msg":{
"ts":1365109999,
"subject":"This an example webhook message",
"email":"example.webhook@mandrillapp.com",
"sender":"example.sender@mandrillapp.com",
"tags":[
"webhook-example"
],
"state":"bounced",
"metadata":{
"user_id":111
},
"_id":"exampleaaaaaaaaaaaaaaaaaaaaaaaaa",
"_version":"exampleaaaaaaaaaaaaaaa",
"bounce_description":"bad_mailbox",
"bgtools_code":10,
"diag":"smtp;550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces."
},
"_id":"exampleaaaaaaaaaaaaaaaaaaaaaaaaa",
"ts":1433940242
},
{
"event":"hard_bounce",
"msg":{
"ts":1365109999,
"subject":"This an example webhook message",
"email":"example.webhook@mandrillapp.com",
"sender":"example.sender@mandrillapp.com",
"tags":[
"webhook-example"
],
"state":"bounced",
"metadata":{
"user_id":111
},
"_id":"exampleaaaaaaaaaaaaaaaaaaaaaaaaa1",
"_version":"exampleaaaaaaaaaaaaaaa",
"bounce_description":"bad_mailbox",
"bgtools_code":10,
"diag":"smtp;550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces."
},
"_id":"exampleaaaaaaaaaaaaaaaaaaaaaaaaa1",
"ts":1433940242
}
在我的测试ASP页面中,我尝试了一个简单的测试(我已经通过将其保存到数据库并检查内容来确认JSON数据有效)
<!--#INCLUDE file="aspJSON.asp" -->
str2 = <POST DATA FROM MANDRILL>
Set oJSON = New aspJSON
oJSON.loadJSON(str2)
Response.Write oJSON.data("event") & "<hr>"
response.write "<h1>test</h1>"
For Each phonenr In oJSON.data("msg")
Set this = oJSON.data("msg").item(phonenr)
Response.Write _
this.item("subject") & ": " & _
this.item("diag") & "<br>"
Next
当Mandrill调用ASP页面时,它会返回以下错误:
描述:对象不是集合:。
对于这一行: 对于每个phonenr在oJSON.data(“msg”)
我不知道如何为每个事件循环,并从“msg”和“_id”值中获取属性。
答案 0 :(得分:1)
包装str2以使其成为有效的JSON集合并更新代码以迭代该集合,如下所示。
<!--#INCLUDE file="aspJSON.asp" -->
str2 = <POST DATA FROM MANDRILL>
' Wrap str2 to turn it into a collection
str2 = "{""events"":[" & str2 & "]}"
Set oJSON = New aspJSON
oJSON.loadJSON(str2)
response.write "<h1>test</h1>"
For Each eventrec In oJSON.data("events") ' Iterate through events
Set this = oJSON.data("events").item(eventrec).item("msg") ' select msg in each eventrec
Response.Write _
this.item("subject") & ": " & _
this.item("diag") & "<br>"
Next