Compartilhamento de código-fonte da classe ASP JSON, amigos necessitados podem consultá-lo. Copie o código do código da seguinte forma:
<%
'================================================ ============
'Nome do arquivo: /Cls_Json.asp
'Função do arquivo: arquivo de classe JSON do sistema
' Versão do arquivo: VBS JSON (JavaScript Object Notation) Versão 2.0.2
'Modificação do programa: Cloud.L
' Última atualização: 12/05/2009
'================================================ ============
'Núcleo do programa: JSON oficial http://www.json.org/
'Blog do autor: http://www.cnode.cn
'================================================ ============
Classe Json_Cls
Coleção Pública
Contagem pública
Public QuotedVars 'Se adicionar aspas às variáveis
Tipo Público '0 = objeto, 1 = array
Subclasse Privada_Initialize
Definir coleção = Server.CreateObject (GP_ScriptingDictionary)
QuotedVars = Verdadeiro
Contagem = 0
Finalizar sub
Subclasse Privada_Terminate
Definir coleção = nada
Finalizar sub
' contador
Contador de propriedade privada
Contador=Contagem
Contagem = Contagem + 1
Fim da propriedade
'Definir tipo de objeto
Propriedade pública Let SetKind(ByVal fpKind)
Selecione Caso LCase(fpKind)
Objeto de caso:Kind=0
Matriz de caso:Kind=1
Finalizar seleção
Fim da propriedade
'-malupulação de dados
'-par
Propriedade pública Deixe Pair (p, v)
Se IsNull (p) Então p = Contador
Coleção (p) = v
Fim da propriedade
Par de conjunto de propriedades públicas (p, v)
Se IsNull (p) Então p = Contador
Se TypeName(v) <> Json_Cls Então
Err.Raise &hD, classe: classe, objeto de classe: ' & TypeName (v) & '
Terminar se
Definir coleção (p) = v
Fim da propriedade
Propriedade padrão pública obter par (p)
Se IsNull (p) Então p = Contagem - 1
Se IsObject(Collection(p)) Então
Definir par = coleção (p)
Outro
Par = Coleção(p)
Terminar se
Fim da propriedade
'-par
Sublimpeza pública
Coleção.RemoveAll
Finalizar sub
Sub-remoção pública (vProp)
Coleção.Remover vProp
Finalizar sub
'malupulação de dados
'codificação
Função Pública jsEncode(str)
Dim 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 para Len(str)
p = Verdadeiro
c = Médio (str, i, 1)
Para j = 0 a 7
Se c = Chr(aL1(j)) Então
jsEncode = jsEncode & / & Chr(aL2(j))
p = Falso
Sair para
Terminar se
Próximo
Se p então
Escureça um
a = AscW(c)
Se a > 31 E a < 127 Então
jsEncode = jsEncode & c
ElseIf a > -1 Ou a < 65535 Then
jsEncode = jsEncode & /u & String(4 - Len(Hex(a)), 0) & Hex(a)
Terminar se
Terminar se
Próximo
Função final
' convertendo
Função pública para JSON (vPair)
Selecione Caso VarType (vPair)
Caso 1' Nulo
para JSON = nulo
Caso 7 'Data
'yaz saati problema var
' jsValue = new Date( & Round((vVal - #01/01/1970 02:00#) * 86400000) & )
toJSON = & CStr(vPair) &
Caso 8' Corda
toJSON = & jsEncode(vPair) &
Caso 9 'Objeto
Dim bFI,i
bFI = Verdadeiro
Se vPair.Kind Então toJSON = toJSON & [ Else toJSON = toJSON & {
Para cada i em vPair.Collection
Se bFI Então bFI = False Else toJSON = toJSON & ,
Se vPair.Kind então
toJSON = toJSON & toJSON(vPair(i))
Outro
Se CitadoVars Então
paraJSON = paraJSON & & i & : & paraJSON(vPair(i))
Outro
toJSON = toJSON & i & : & toJSON(vPair(i))
Terminar se
Terminar se
Próximo
Se vPair.Kind Então toJSON = toJSON & ] Else toJSON = toJSON & }
Caso 11
Se vPair Então toJSON = verdadeiro Caso contrário, toJSON = falso
Caso 12, 8192, 8204
Dim SEB
toJSON = MultiArray(vPair, 1, , sEB)
Outro caso
toJSON = Substituir(vPair, ,, .)
Finalizar seleção
Função final
Função pública MultiArray (aBD, iBC, sPS, ByRef sPT) 'Array BoDy, Integer BaseCount, String PoSition
Dim iDU, iDL, i ' Integer DimensionUBound, Integer DimensionLBound
Em caso de erro, retomar o próximo
iDL = LBound(aBD, iBC)
iDU = UBound(aBD, iBC)
Dim sPB1, sPB2 ' String PointBuffer1, String PointBuffer2
Se Err = 9 Então
sPB1 = sPT e sPS
Para i = 1 para Len(sPB1)
Se eu <> 1 Então sPB2 = sPB2 & ,
sPB2 = sPB2 e Médio (sPB1, i, 1)
Próximo
MultiArray = MultiArray & toJSON(Eval(aBD( & sPB2 & )))
Outro
sPT = sPT e sPS
MultiArray = MultiArray & [
Para i = iDL Para iDU
MultiArray = MultiArray e MultiArray(aBD, iBC + 1, i, sPT)
Se eu <iDU Então MultiArray = MultiArray & ,
Próximo
MultiArray = MultiArray &]
sPT = Esquerda (sPT, iBC - 2)
Terminar se
Função final
Propriedade pública GetToString
ToString = toJSON(Eu)
Fim da propriedade
Sub-liberação pública
If TypeName(Response) <> Vazio Então
Resposta.Write(ToString)
ElseIf WScript <> Vazio Então
WScript.Echo(ToString)
Terminar se
Finalizar sub
Clone de função pública
Definir Clone = ColClone(Eu)
Função final
Função privada ColClone (núcleo)
Dim jsc, eu
Definir jsc = Novo Json_Cls
jsc.Kind = núcleo.Kind
Para cada i em core.Collection
Se IsObject(core(i)) Então
Definir jsc(i) = ColClone(núcleo(i))
Outro
jsc(i) = núcleo(i)
Terminar se
Próximo
Definir ColClone = jsc
Função final
Função pública QueryToJSON (dbc, sql)
Dim rs, jsa,col
Definir rs = dbc.Execute(sql)
Definir jsa = Novo Json_Cls
jsa.SetKind = matriz
Embora não (rs.EOF ou rs.BOF)
Definir jsa (Nulo) = Novo Json_Cls
jsa(Null).SetKind=objeto
Para cada coluna em rs.Fields
jsa(Nulo)(col.Nome) = col.Valor
Próximo
rs.MoveNext
Wend
Definir QueryToJSON = jsa
Função final
Fim da aula
%>