Intercambio de código fuente de clase ASP JSON, los amigos que lo necesiten pueden consultarlo. Copie el código de código de la siguiente manera:
<%
'=================================================== = ============
'Nombre de archivo: /Cls_Json.asp
'Rol de archivo: archivo de clase JSON del sistema
' Versión del archivo: VBS JSON (Notación de objetos JavaScript) Versión 2.0.2
'Modificación del programa: Cloud.L
' Última actualización: 2009-05-12
'=================================================== = ============
'Núcleo del programa: JSON oficial http://www.json.org/
' Blog del autor: http://www.cnode.cn
'=================================================== = ============
Clase Json_Cls
Colección pública
Conteo público
Public QuotedVars 'Si se deben agregar comillas a las variables
Tipo público ' 0 = objeto, 1 = matriz
Subclase privada_Inicializar
Establecer colección = Server.CreateObject(GP_ScriptingDictionary)
QuotedVars = Verdadero
Contar = 0
Subtítulo final
Subclase privada_Terminar
Colección de conjuntos = Nada
Subtítulo final
' encimera
Contador de obtención de propiedad privada
Contador=Contar
Contar = Contar + 1
Propiedad final
'Establecer tipo de objeto
Propiedad pública Let SetKind(ByVal fpKind)
Seleccione Caso LCaso(fpKind)
Objeto de caso: Tipo = 0
Matriz de casos: Tipo = 1
Seleccionar fin
Propiedad final
'-malupación de datos
' -- par
Propiedad pública dejar par (p, v)
Si IsNull(p) Entonces p = Contador
Colección(p) = v
Propiedad final
Par de conjunto de propiedad pública (p, v)
Si IsNull(p) Entonces p = Contador
Si TypeName(v) <> Json_Cls Entonces
Err.Raise &hD, clase: clase, objeto de clase: ' & TypeName(v) & '
Terminar si
Establecer colección (p) = v
Propiedad final
Propiedad pública predeterminada Obtener par(p)
Si es nulo (p) entonces p = recuento - 1
Si esObjeto(Colección(p)) Entonces
Establecer par = Colección (p)
Demás
Par = Colección(p)
Terminar si
Propiedad final
' -- par
Sublimpieza pública
Colección.RemoveAll
Subtítulo final
Eliminación secundaria pública (vProp)
Colección.Eliminar vProp
Subtítulo final
'malupación de datos
'codificacion
Función pública jsEncode (cadena)
Atenuar i, j, aL1, aL2, c, p
aL1 = Matriz(&h22, &h5C, &h2F, &h08, &h0C, &h0A, &h0D, &h09)
aL2 = Matriz(&h22, &h5C, &h2F, &h62, &h66, &h6E, &h72, &h74)
Para i = 1 a Len(str)
p=verdadero
c = Medio(cadena, i, 1)
Para j = 0 a 7
Si c = Chr(aL1(j)) Entonces
jsEncode = jsEncode & / & Chr(aL2(j))
p = Falso
Salir por
Terminar si
Próximo
Si p entonces
atenuar un
a = AscW(c)
Si a > 31 y a < 127 entonces
jsEncode = jsEncode &c
De lo contrario, si a > -1 o a < 65535, entonces
jsEncode = jsEncode & /u & String(4 - Len(Hex(a)), 0) & Hex(a)
Terminar si
Terminar si
Próximo
Función final
'convirtiendo
Función pública para JSON (vPair)
Seleccione Caso VarType (vPair)
Caso 1' Nulo
toJSON = nulo
Caso 7' Fecha
'yaz saati problema var
' jsValue = nueva Fecha( & Ronda((vVal - #01/01/1970 02:00#) * 86400000) & )
toJSON = & CStr(vPair) &
Caja de cuerda de 8'
toJSON = & jsEncode(vPair) &
Caso 9 'Objeto
Tenue bFI,i
bFI=Verdadero
Si vPair.Kind Entonces toJSON = toJSON & [ De lo contrario toJSON = toJSON & {
Para cada i en vPair.Collection
Si bFI Entonces bFI = False De lo contrario toJSON = toJSON & ,
Si vPair.Kind Entonces
toJSON = toJSON & toJSON(vPair(i))
Demás
Si se citanVars entonces
toJSON = toJSON & & i & : & toJSON(vPair(i))
Demás
toJSON = toJSON & i & : & toJSON(vPair(i))
Terminar si
Terminar si
Próximo
Si vPair.Kind Entonces toJSON = toJSON & ] Si no toJSON = toJSON & }
Caso 11
Si vPair Entonces toJSON = verdadero De lo contrario toJSON = falso
Caso 12, 8192, 8204
sEB tenue
toJSON = MultiArray(vPair, 1, sEB)
Caso más
toJSON = Reemplazar (vPair,,,.)
Finalizar selección
Función final
Función pública MultiArray (aBD, iBC, sPS, ByRef sPT) ' Cuerpo de matriz, Número de base entero, Posición de cadena
Dim iDU, iDL, i ' Dimensión enteraUBound, Dimensión enteraLBound
En caso de error Continuar siguiente
iDL = LBound(aBD, iBC)
iDU = UBound(aBD, iBC)
Dim sPB1, sPB2 ' Cadena PointBuffer1, Cadena PointBuffer2
Si Err = 9 entonces
sPB1 = sPT y sPS
Para i = 1 a Len(sPB1)
Si i <> 1 Entonces sPB2 = sPB2 & ,
sPB2 = sPB2 y medio (sPB1, i, 1)
Próximo
MultiArray = MultiArray & toJSON(Eval(aBD( & sPB2 & )))
Demás
sPT = sPT y sPS
Matriz múltiple = Matriz múltiple & [
Para i = iDL a iDU
MultiArray = MultiArray y MultiArray (aBD, iBC + 1, i, sPT)
Si i < iDU Entonces MultiArray = MultiArray &,
Próximo
Matriz múltiple = Matriz múltiple & ]
sPT = Izquierda(sPT, iBC - 2)
Terminar si
Función final
Propiedad pública GetToString
ToString = toJSON(Yo)
Propiedad final
Descarga secundaria pública
Si TypeName (Respuesta) <> Vacío Entonces
Respuesta.Escribir(ToString)
ElseIf WScript <> Vacío Entonces
WScript.Echo(ToString)
Terminar si
Subtítulo final
Clon de función pública
Establecer clonación = ColClone(Yo)
Función final
Función privada ColClone (núcleo)
Dim jsc, yo
Establecer jsc = Nuevo Json_Cls
jsc.Tipo = núcleo.Tipo
Para cada i en core.Collection
Si esObjeto(núcleo(i)) Entonces
Establecer jsc(i) = ColClone(núcleo(i))
Demás
jsc(i) = núcleo(i)
Terminar si
Próximo
Establecer ColClone = jsc
Función final
Consulta de función pública a JSON (dbc, sql)
Dim rs, jsa, col
Establecer rs = dbc.Execute(sql)
Establecer jsa = Nuevo Json_Cls
jsa.SetKind=matriz
Mientras no (rs.EOF o rs.BOF)
Establecer jsa (Nulo) = Nuevo Json_Cls
jsa(Nulo).SetKind=objeto
Para cada columna en rs.Fields
jsa(Nulo)(col.Nombre) = col.Valor
Próximo
rs.MoverSiguiente
Encaminarse a
Establecer QueryToJSON = jsa
Función final
Fin de clase
%>