ASP JSON: Object not a collection
Solution 1:
In my experience it's far easier to just use JScript as your server side scripting language than to use the aspjson class. You could render your JSON object as follows
<%@language="javascript"%>
<!DOCTYPE html>
<html>
<body>
<%
var oJSON =[
{
"PitcherID": "456068"
},
{
"PitcherID": "431148"
}
]
for (i in oJSON)
{
Response.write((oJSON[i].PitcherID) + "<br />");
}
%>
</body>
</html>
I realise that this may cause problems if the json processing is only part of a page and the rest of it uses VBScript, however you can execute server side JS in what is otherwise a VBS page by using <script runat="server">
eg
<%@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>
Solution 2:
The problem is the class from http://aspjson.com is limited and personally I've always found it hard to find decent examples of how to use it.
Why do you get the Object not a collection
error?
It's quite simple really the object you are trying to iterate through like an array / collection is not one.
This line
For Each thing In oJSON.data("PitcherID")
will fail because oJSON.data("PitcherID")
is not a collection object which means you cannot iterate through it. For PitcherID
to be enumerable the source JSON structure would look more like this
{
"PitcherID": [
"456068",
"431148"
]
}
for example.
Links
- Any good libraries for parsing JSON in Classic ASP?