ASP JSON: Object not a collection

前端 未结 2 1891
情歌与酒
情歌与酒 2020-12-04 03:55

How should I retrieve PitcherID from this JSON? I am using the class from http://aspjson.com.

JSON

[
 {
  \"PitcherID\": \"456068\"
         


        
相关标签:
2条回答
  • 2020-12-04 04:17

    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?
    0 讨论(0)
  • 2020-12-04 04:25

    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>
    
    0 讨论(0)
提交回复
热议问题