Partage du code source de la classe ASP JSON, les amis dans le besoin peuvent s'y référer. Copiez le code comme suit :
<%
'================================================== = ===========
'Nom du fichier : /Cls_Json.asp
'Rôle de fichier : fichier de classe système JSON
' Version du fichier : VBS JSON (JavaScript Object Notation) version 2.0.2
'Modification du programme : Cloud.L
' Dernière mise à jour : 2009-05-12
'================================================== = ===========
'Noyau du programme : JSON officiel http://www.json.org/
' Blog de l'auteur : http://www.cnode.cn
'================================================== = ===========
Classe Json_Cls
Collection publique
Décompte public
Public QuotedVars 'S'il faut ajouter des guillemets aux variables
Type public ' 0 = objet, 1 = tableau
Sous-classe privée_Initialize
Définir la collection = Server.CreateObject (GP_ScriptingDictionary)
VarsCités = Vrai
Compte = 0
Fin du sous-marin
Sous-classe privée_Terminate
Définir la collection = Rien
Fin du sous-marin
' comptoir
Propriété privée Obtenir un compteur
Compteur=Compte
Nombre = Nombre + 1
Propriété de fin
'Définir le type d'objet
Propriété publique Let SetKind (ByVal fpKind)
Sélectionnez le cas LCase (fpKind)
Objet de cas : Kind=0
Tableau de cas : Kind=1
Fin de la sélection
Propriété de fin
'-maluplation des données
' -- paire
Propriété publique Let Pair(p, v)
Si IsNull(p) Alors p = Compteur
Collection(p) = v
Propriété de fin
Paire d'ensembles de propriétés publiques (p, v)
Si IsNull(p) Alors p = Compteur
Si TypeName(v) <> Json_Cls Alors
Err.Raise &hD, classe : classe, objet de classe : ' & TypeName(v) & '
Fin si
Définir la collection (p) = v
Propriété de fin
Propriété publique par défaut Get Pair(p)
Si IsNull(p) Alors p = Nombre - 1
Si IsObject(Collection(p)) Alors
Définir la paire = Collection (p)
Autre
Paire = Collection(p)
Fin si
Propriété de fin
' -- paire
Sous-nettoyage public
Collection.RemoveAll
Fin du sous-marin
Suppression de sous-public (vProp)
Collection. Supprimer vProp
Fin du sous-marin
'maluplation des données
'codage
Fonction publique jsEncode(str)
Dim je, j, aL1, aL2, c, p
aL1 = Tableau(&h22, &h5C, &h2F, &h08, &h0C, &h0A, &h0D, &h09)
aL2 = Tableau(&h22, &h5C, &h2F, &h62, &h66, &h6E, &h72, &h74)
Pour i = 1 À Len(str)
p=Vrai
c = Milieu (str, i, 1)
Pour j = 0 à 7
Si c = Chr(aL1(j)) Alors
jsEncode = jsEncode & / & Chr(aL2(j))
p = Faux
Quitter pour
Fin si
Suivant
Si p Alors
Atténuer un
une = AscW(c)
Si a > 31 Et a < 127 Alors
jsEncode = jsEncode & c
SinonSi a > -1 Ou a < 65535 Alors
jsEncode = jsEncode & /u & String(4 - Len(Hex(a)), 0) & Hex(a)
Fin si
Fin si
Suivant
Fonction de fin
' conversion
Fonction publique toJSON (vPair)
Sélectionnez le type de variable de cas (vPair)
Cas 1 'Nul
versJSON = nul
Cas 7 'Date
'yaz saati problème je var
' jsValue = nouvelle Date( & Round((vVal - #01/01/1970 02:00#) * 86400000) & )
versJSON = & CStr(vPair) &
Caisse 8' Corde
toJSON = & jsEncode(vPair) &
Cas 9 'Objet
Faible bFI, je
bFI=Vrai
Si vPair.Kind Alors toJSON = toJSON & [ Sinon toJSON = toJSON & {
Pour chaque i dans vPair.Collection
Si bFI Alors bFI = False Sinon toJSON = toJSON & ,
Si vPair.Kind Alors
versJSON = versJSON & versJSON(vPair(i))
Autre
Si QuotedVars Alors
versJSON = versJSON & & je & : & versJSON(vPair(i))
Autre
versJSON = versJSON & je & : & versJSON(vPair(i))
Fin si
Fin si
Suivant
Si vPair.Kind Alors toJSON = toJSON & ] Sinon toJSON = toJSON & }
Cas 11
Si vPair Alors toJSON = true Sinon toJSON = false
Cas 12, 8192, 8204
Dim sEB
toJSON = MultiArray (vPair, 1, , seB)
Autre cas
toJSON = Remplacer (vPair, ,, .)
Fin de la sélection
Fonction de fin
Fonction publique MultiArray (aBD, iBC, sPS, ByRef sPT) 'Array BoDy, Integer BaseCount, String PoSition
Dim iDU, iDL, i ' DimensionUBound entière, DimensionLBound entière
En cas d'erreur, reprendre ensuite
iDL = LBound (aBD, iBC)
iDU = UBound(aBD, iBC)
Dim sPB1, sPB2 ' Chaîne PointBuffer1, Chaîne PointBuffer2
Si Err = 9 Alors
sPB1 = sPT et sPS
Pour i = 1 à Len(sPB1)
Si je <> 1 Alors sPB2 = sPB2 & ,
sPB2 = sPB2 et milieu (sPB1, i, 1)
Suivant
MultiArray = MultiArray & toJSON(Eval(aBD( & sPB2 & )))
Autre
sPT = sPT et sPS
MultiArray = MultiArray & [
Pour i = iDL Vers iDU
MultiArray = MultiArray & MultiArray (aBD, iBC + 1, i, sPT)
Si je < iDU Alors MultiArray = MultiArray & ,
Suivant
MultiArray = MultiArray & ]
sPT = Gauche (sPT, iBC - 2)
Fin si
Fonction de fin
Propriété publique GetToString
ToString = toJSON (Moi)
Propriété de fin
Sous-flux public
Si TypeName(Response) <> Vide Alors
Réponse.Write(ToString)
ElseIf WScript <> Vide Alors
WScript.Echo(ToString)
Fin si
Fin du sous-marin
Clone de fonction publique
Définir Clone = ColClone (Moi)
Fonction de fin
Fonction privée ColClone (noyau)
Dim jsc,je
Définir jsc = Nouveau Json_Cls
jsc.Kind = core.Kind
Pour chaque i dans core.Collection
Si IsObject(core(i)) Alors
Définir jsc(i) = ColClone(core(i))
Autre
jsc(i) = noyau(i)
Fin si
Suivant
Définir ColClone = jsc
Fonction de fin
Fonction publique QueryToJSON (dbc, sql)
Dim rs, jsa,col
Définir rs = dbc.Execute(sql)
Définir jsa = Nouveau Json_Cls
jsa.SetKind=tableau
Tandis que non (rs.EOF ou rs.BOF)
Définir jsa (Null) = Nouveau Json_Cls
jsa(Null).SetKind=objet
Pour chaque col dans rs.Fields
jsa(Null)(col.Name) = col.Valeur
Suivant
rs.MoveNext
Wende
Définir QueryToJSON = jsa
Fonction de fin
Fin du cours
%>