Toutes les bonnes bibliothèques pour parsingr JSON dans ASP classique?

J’ai été capable de trouver un nombre illimité de bibliothèques pour générer JSON dans ASP classique (VBScript) mais je n’ai pas été à la recherche de tout pour l’ parsing .

Je veux quelque chose que je peux passer une chaîne JSON et récupérer un object VBScript de quelque sorte (Array, Scripting.Dictionary, etc.)

Quelqu’un peut-il recommander une bibliothèque pour parsingr JSON dans ASP classique?

    Gardez à l’esprit que Classic ASP inclut JScript ainsi que VBScript. Fait intéressant, vous pouvez parsingr JSON en utilisant JScript et utiliser les objects résultants directement dans VBScript.

    Par conséquent, il est possible d’utiliser le https://github.com/douglascrockford/JSON-js/blob/master/json2.js canonique dans le code côté serveur avec aucune modification.

    Bien entendu, si votre JSON inclut des tableaux, ceux-ci restront des tableaux JScript lorsque l’parsing sera terminée. Vous pouvez accéder au contenu du tableau JScript à partir de VBScript en utilisant la notation par points.

    <%@Language="VBScript" %> <% Option Explicit %>  <% Dim myJSON myJSON = Request.Form("myJSON") // "[ 1, 2, 3 ]" Set myJSON = JSON.parse(myJSON) // [1,2,3] Response.Write(myJSON) // 1,2,3 Response.Write(myJSON.[0]) // 1 Response.Write(myJSON.[1]) // 2 Response.Write(myJSON.[2]) // 3 %> 

    Pas sûr à ce sujet. Avez-vous vérifié ASP extreme framework qui prend en charge JSON?

    Je ne pouvais pas faire évoluer l’extrême évolution ou la suggestion de Chris Nielson. Mais ce qui suit a fonctionné pour moi:

    http://tforster.wik.is/ASP_Classic_Practices_For_The_21st_Century/JSON4ASP

    Téléchargez ce qui suit en tant que “json2.min.asp”

    http://tforster.wik.is/@api/deki/files/2/=json2.min.asp

    Ajoutez la ligne suivante en haut de votre fichier ASP:

      

    Vous pouvez ensuite utiliser JSON dans ASP.

      Dim car: Set car = JSON.parse("{""brand"":""subaru"",""model"":""outback sport"",""year"":2003," & _ """colour"":""green"",""accessories"":[" & _ "{""foglamps"":true},{""abs"":true},{""heatedSeats"":true}]}") Response.Write("brand: " & car.brand & "
    ") Response.Write("model: " & car.model & "
    ") Response.Write("colour: " & car.colour & "
    ") Response.Write("has foglamps: " & CStr(car.accessories.get(0).foglamps) & "
    ") car.accessories.get(0).foglamps = false Response.Write("has foglamps: " & CStr(car.accessories.get(0).foglamps) & "
    ") Response.Write("new Json: " & JSON.ssortingngify(car) & "
    ") Set car = Nothing

    Remarque: pour parsingr un tableau d’éléments, vous devez effectuer les opérations suivantes:

      for each iTmp in testing if (TypeName(iTmp))<>"JScriptTypeInfo" then Response.Write("Item: " & iTmp & "
    ") end if next

    J’ai récemment implémenté une classe VbsJson , qui possède une méthode ” Decode ” pour parsingr JSON en VBScript et une méthode ” Encode ” pour générer JSON à partir de VBScript. Le code est un peu long, donc je ne le colle pas ici.

    J’ai écrit cette réponse quand je cherchais une solution pure et légère de VBScript uniquement.

    En assemblant un convertisseur JSON en XML rudimentaire, nous pouvons parcourir la chaîne JSON et la transformer en un document Microsoft.XMLDOM.

    À partir de là, nous utilisons l’API XML de Microsoft, y compris les requêtes XPath, pour extraire les valeurs souhaitées.

    Cela gère le JSON simple, mais je n’ai jamais voulu cette réponse pour quelque chose de plus sophistiqué.

    Pour une solution plus robuste, le meilleur interpréteur JSON est un moteur Javascript approprié. Par conséquent, je recommande fortement la réponse acceptée à cette question, c’est-à-dire les bonnes bibliothèques pour parsingr JSON dans ASP classique?

     Function JSONtoXML(jsonText) Dim idx, max, ch, mode, xmldom, xmlelem, xmlchild, name, value Set xmldom = CreateObject("Microsoft.XMLDOM") xmldom.loadXML "" Set xmlelem = xmldom.documentElement max = Len(jsonText) mode = 0 name = "" value = "" While idx < max idx = idx + 1 ch = Mid(jsonText, idx, 1) Select Case mode Case 0 ' Wait for Tag Root Select Case ch Case "{" mode = 1 End Select Case 1 ' Wait for Attribute/Tag Name Select Case ch Case """" name = "" mode = 2 Case "{" Set xmlchild = xmldom.createElement("tag") xmlelem.appendChild xmlchild xmlelem.appendchild xmldom.createTextNode(vbCrLf) xmlelem.insertBefore xmldom.createTextNode(vbCrLf), xmlchild Set xmlelem = xmlchild Case "[" Set xmlchild = xmldom.createElement("tag") xmlelem.appendChild xmlchild xmlelem.appendchild xmldom.createTextNode(vbCrLf) xmlelem.insertBefore xmldom.createTextNode(vbCrLf), xmlchild Set xmlelem = xmlchild Case "}" Set xmlelem = xmlelem.parentNode Case "]" Set xmlelem = xmlelem.parentNode End Select Case 2 ' Get Attribute/Tag Name Select Case ch Case """" mode = 3 Case Else name = name + ch End Select Case 3 ' Wait for colon Select Case ch Case ":" mode = 4 End Select Case 4 ' Wait for Attribute value or Tag contents Select Case ch Case "[" Set xmlchild = xmldom.createElement(name) xmlelem.appendChild xmlchild xmlelem.appendchild xmldom.createTextNode(vbCrLf) xmlelem.insertBefore xmldom.createTextNode(vbCrLf), xmlchild Set xmlelem = xmlchild name = "" mode = 1 Case "{" Set xmlchild = xmldom.createElement(name) xmlelem.appendChild xmlchild xmlelem.appendchild xmldom.createTextNode(vbCrLf) xmlelem.insertBefore xmldom.createTextNode(vbCrLf), xmlchild Set xmlelem = xmlchild name = "" mode = 1 Case """" value = "" mode = 5 Case " " Case Chr(9) Case Chr(10) Case Chr(13) Case Else value = ch mode = 7 End Select Case 5 Select Case ch Case """" xmlelem.setAttribute name, value mode = 1 Case "\" mode = 6 Case Else value = value + ch End Select Case 6 value = value + ch mode = 5 Case 7 If Instr("}], " & Chr(9) & vbCr & vbLf, ch) = 0 Then value = value + ch Else xmlelem.setAttribute name, value mode = 1 Select Case ch Case "}" Set xmlelem = xmlelem.parentNode Case "]" Set xmlelem = xmlelem.parentNode End Select End If End Select Wend Set JSONtoXML = xmlDom End Function 

    Le script ci-dessus transforme le JSON suivant:

     { "owningSystemUrl": "http://www.arcgis.com", "authInfo": { "tokenServicesUrl": "https://www.arcgis.com/sharing/rest/generateToken", "isTokenBasedSecurity": true } } 

    dans:

         

    Nous pouvons maintenant utiliser XPath pour extraire le tokenServicesUrl , par exemple:

     dom.SelectSingleNode("xml/authInfo").getAtsortingbute("tokenServicesUrl") ' Returns: "https://www.arcgis.com/sharing/rest/generateToken" 

    AX est une excellente bibliothèque mais est plutôt lourde si vous avez juste besoin de la fonctionnalité de traitement JSON.

    Cependant, j’ai saisi le fichier base.asp et le fichier de classe json.asp du projet AX et les ai utilisés avec succès pour implémenter une parsing JSON dans mon projet.

    Pour la génération JSON, j’ai trouvé aspjson plus simple à intégrer. Il a également des fonctionnalités plus puissantes liées à json. La documentation sur les haches manquait un peu et il y avait plus de travail à intégrer dans le projet, mais elle réussissait bien à sérialiser son object JSON VB en une chaîne de caractères.

    les solutions ici sont très bonnes mais parfois excessives. Si le JSON est simple et toujours la même structure, vous pouvez l’parsingr vous-même, c’est simple et rapide.

      'read data from client records = Request.Form("records") 'convert the JSON ssortingng to an array Set oRegExpre = new RegExp oRegExpre.Global = true oRegExpre.Pattern = "[\[\]\{\}""]+" records = replace(records, "},{","||") records = oRegExpre.Replace(records, "" ) aRecords = split(records,"||") 'iterate the array and do some cleanup for each rec in aRecords aRecord = split(rec,",") id = split(aRecord(1),":")(1) field = split(aRecord(0),":")(0) updateValue = split(aRecord(0),":")(1) updateValue = replace(updateValue,chr(10),"\n") updateValue = replace(updateValue,chr(13),"\r") updateValue = replace(updateValue,"'","''") 'etc next