ASP JSON:对象不是集合

时间:2015-05-29 20:13:54

标签: json object collections vbscript asp-classic

我应该如何从这个JSON中检索PitcherID?我正在使用http://aspjson.com中的课程。

JSON

[
 {
  "PitcherID": "456068"
 },
 {
  "PitcherID": "431148"
 }
]

代码

oJSON.loadJSON("...")

For Each thing In oJSON.data("PitcherID")
    Set this = oJSON.data("PitcherID").item(thing)
    response.write this.item("PitcherID")
Next

错误

Microsoft VBScript runtime error '800a01c3'

Object not a collection

2 个答案:

答案 0 :(得分:1)

根据我的经验,使用JScript作为服务器端脚本语言比使用aspjson类要容易得多。您可以按如下方式呈现JSON对象

<%@language="javascript"%>
<!DOCTYPE html>
<html>
<body>


    <%
    var oJSON =[
     {
      "PitcherID": "456068"
     },
     {
      "PitcherID": "431148"
     }
    ]
    for (i in oJSON)
    { 
     Response.write((oJSON[i].PitcherID) + "<br />");
    } 
    %>

</body>
</html>

我意识到如果json处理只是页面的一部分并且其余部分使用VBScript,这可能会导致问题,但是你可以使用<script runat="server">在VBS页面中执行服务器端JS,例如

<%@language="VBScript"%>
<!DOCTYPE html>
<html>
<head>

<script language="javascript" runat="server">
var oJSON =[
 {
  "PitcherID": "456068"
 },
 {
  "PitcherID": "431148"
 }
]
var strout = ""
for (i in oJSON)
{ 
 strout = strout + ((oJSON[i].PitcherID) + "<br />");
} 
</script>


</head>
<body>

<% Response.write strout %>

</body>
</html>

答案 1 :(得分:1)

问题是来自http://aspjson.com的课程是有限的,我个人总是发现很难找到如何使用它的正确例子。

为什么会出现Object not a collection错误?

非常简单,你试图像数组/集合一样迭代的对象不是一个。

这一行

For Each thing In oJSON.data("PitcherID")

将失败,因为oJSON.data("PitcherID")不是集合对象,这意味着您无法遍历它。要使PitcherID可枚举,源JSON结构看起来更像是

{
  "PitcherID": [
    "456068",
    "431148"
  ]
}

例如。

链接