Search code examples
jsonasp-classic

How to access JSON data in classic ASP using json2.asp or aspjson libraries?


Using http://www.aspjson.com/ or https://github.com/nagaozen/asp-xtreme-evolution/blob/master/lib/axe/classes/Parsers/json2.asp object I managed to get my data from URL to the dictionary object. But I tried and can not think of the way to get the data from the "opening" object using aspjson :-( I have not managed to find a way to get any data using json2.asp library. Here is my data:

{
"restaurant": {
    "id": 6,
    "email": "xyz@gmail.com",
    "visiblemail": "1",
    "date": "2014-07-24 07:38:59",
    "logo": "818_294.png",
    "img": "818_554|818_558|818_563",
    "opening": {
        "sun": [
            "closed"
        ],
        "mon": [
            "10.00",
            "20.00"
        ],
        "tue": [
            "10.00",
            "20.00"
        ],
        "wed": [
            "10.00",
            "20.00"
        ],
        "thu": [
            "10.00",
            "20.00"
        ],
        "fri": [
            "10.00",
            "20.00"
        ],
        "sat": [
            "closed"
        ],
        "hol": [
            "zaprto"
        ]
    },

    "timetable": null
}

}

I know both libraries use dictionary object to store the data, but I am lost how do I retrieve the data from the object.


Solution

  • You can use the isObject check to see if the element has inner members.

    The include file used is from the link you gave

    <!--#include file="aspJSON1.17.asp" -->
    <%
    Set oJSON = New aspJSON
    jsonstring = "{ "&_
    """restaurant"": {"&_
        """id"": 6,"&_
        """email"": ""xyz@gmail.com"","&_
        """visiblemail"": ""1"","&_
        """date"": ""2014-07-24 07:38:59"","&_
        """logo"": ""818_294.png"","&_
        """img"": ""818_554|818_558|818_563"","&_
        """opening"": {"&_
        "    ""sun"": ["&_
        "        ""closed"""&_
        "    ],"&_
        "    ""mon"": ["&_
        "        ""10.00"","&_
        "        ""20.00"""&_
        "    ],"&_
        "    ""tue"": ["&_
        "        ""10.00"","&_
        "        ""20.00"""&_
        "    ],"&_
        "    ""wed"": ["&_
        "        ""10.00"","&_
        "        ""20.00"""&_
        "    ],"&_
        "    ""thu"": ["&_
        "        ""10.00"","&_
        "        ""20.00"""&_
        "    ],"&_
        "    ""fri"": ["&_
        "        ""10.00"","&_
        "        ""20.00"""&_
        "    ],"&_
        "    ""sat"": ["&_
        "        ""closed"""&_
        "    ],"&_
        "    ""hol"": ["&_
        "        ""zaprto"""&_
        "    ]"&_
        "},"&_
        """timetable"": null"&_
    "}"
    
    
    'Load JSON string
    oJSON.loadJSON(jsonstring)
    
    set restaurant = oJSON.data("restaurant")
    
    for each itm in restaurant
        if Not IsObject(restaurant.item(itm)) then
            Response.write itm  &" : "& restaurant.item(itm) & "<br/>"
        else
        'opening
            for each dayy in restaurant.item(itm)
                Response.write dayy & ":"
                    Response.write restaurant.item(itm)(dayy)(0) 
    
                    If restaurant.item(itm)(dayy)(1) <> "" Then
                        Response.write " - "
                        Response.write restaurant.item(itm)(dayy)(1) 
                    End If
    
                Response.write "<br/>"
            next
        end if
    
        
    next
    
    
    
    
    %>
    

    Using the file at:https://github.com/nagaozen/asp-xtreme-evolution/blob/master/lib/axe/classes/Parsers/json2.asp You can traverse through the json using the .enumerate() call, which returns all keys in a name-value collection and indexes in an array.

    <%
    
    Sub Traverse(oJson)
        Dim key
    
        For Each key In oJson.enumerate()
            
            If IsObject(oJson.get(key)) Then
                Response.write key & " => " 
                Traverse oJson.get(key) 'Recursive call
            Else
                Response.Write(key & "=" & oJson.get(key) & "<br/>")
            End If
        Next
    
    End Sub
    
    %>
    

    Call it like:

    set oJSON= json.parse(jsonstring)
    Traverse oJSON