【问题标题】:How would I iterate through json array using aspjson with classic asp?我将如何使用带有经典 asp 的 aspjson 遍历 json 数组?
【发布时间】:2016-05-04 01:03:33
【问题描述】:

http://www.aspjson.com/Looping through JSON Array using ASPJSON 的帮助下,我走到了这一步

<!--#include file="aspjson.asp" -->

jsonstring = "{""events"":""[{
""email"":""john@test.com"",
""timestamp"":1461015166,
""smtp-id"":""\u003c14c5d75ce93.dfd.64b469@ismtpd-555\u003e"",
""event"":""processed"",
""category"":""cat facts"",
""sg_event_id"":""Y4SkYnMgWCH-j0Ap2HUBlg=="",
""sg_message_id"":""14c5d75ce93.dfd.64b469.filter0001.16648.5515E0B88.0""
},
{
"email"":""example@test.com"",
""timestamp"":1461015166,
""smtp-id"":""\u003c14c5d75ce93.dfd.64b469@ismtpd-555\u003e"",
""event"":""deferred"",
""category"":""cat facts"",
""sg_event_id"":""QVvoFUd9LS5083KTavaqAw=="",
""sg_message_id"":""14c5d75ce93.dfd.64b469.filter0001.16648.5515E0B88.0"",
""response"":""400 try again later"",""attempt"":""5""
},
{
""email"":""john@test.com"",
""timestamp"":1461015166,
""smtp-id"":""\u003c14c5d75ce93.dfd.64b469@ismtpd-555\u003e"",
""event"":""processed"",
""category"":[""Cat Facts"",""Fish Facts""],
""sg_event_id"":""Y4SkYnMgWCH-j0Ap2HUBlg=="",
""sg_message_id"":""14c5d75ce93.dfd.64b469.filter0001.16648.5515E0B88.0""
}]""}"


Set jJSON = New aspJSON
jJSON.loadJSON(jsonstring)

For Each son In jJSON.data("events")
For Each grandson In jJSON.data("events").item(son)
    response.write "<b>" & grandson & ": </b>" & jJSON.data("events").item(son).item(grandson) & "<br>"
Next
response.write "<br>"
Next

我发现的大多数示例都有键的名称,但我并不总是知道它们是什么。

当我的循环到达类别包含两个元素的最后一组时,我的问题就出现了。 “猫的事实”和“鱼的事实”。

错误信息是: Microsoft VBScript 运行时错误“800a01c2” 参数数量错误或属性分配无效

如果我能做到这一点,那将是朝着正确方向迈出的一步,但“类别”可以是另一条记录中的任何名称,它可以有单个或多个值。

我想我需要添加一个 if/then 但我被困在这里。我想我想做这样的伪代码

if isarray(grandson) then
for each greatgrandson in grandson
    response.write greatgrandson
else
    response.write "<b>" & grandson & ": </b>" & jJSON.data("events").item(son).item(grandson) & "<br>"
end if

我确信很明显我仍在为如何将所有这些组合在一起而苦苦挣扎,因此,如果有人有任何可能有帮助的说明或描述链接,将不胜感激。

【问题讨论】:

    标签: arrays json asp-classic


    【解决方案1】:

    您可以检查 孙子 是否是一个对象,如果它循环显示它:

    For Each son In jJSON.data("events")
    For Each grandson In jJSON.data("events").item(son)
        response.write "<b>" & grandson & ": </b>"
        if NOT isObject(jJSON.data("events").item(son).item(grandson)) then
            response.write jJSON.data("events").item(son).item(grandson) 
        else
            for each category in jJSON.data("events").item(son).item(grandson)
                Response.write jJSON.data("events").item(son).item(grandson)(category) & ","
            next
        end if
        Response.write "<br>"
    Next
    response.write "<br>"
    Next
    

    【讨论】:

    • 是否可以通过使用for循环来获取索引。或任何其他方式获取索引号。
    • @rykamol 我不明白,什么索引?也许你可以发布一个问题?
    • 我想获取孙子的数组索引(你的解决方案示例)。
    • @rykamol 也许你可以在每个孙子循环中使用一个计数器
    • 这就是我实现目标的方式。非常感谢@SearchAndResQ
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多