09/09/2008, 05:47
|
| | Fecha de Ingreso: enero-2006 Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 11 meses Puntos: 7 | |
Codificación JSON para asp Hice esta función para condificar información usando JSON para AJAX. Es similar a la función json_encode de PHP. No esta del todo depurada pero hace su función :P
Se le puede pasar tanto arrays de dos dimensiones que emulen los arrays asociativos de php:
$data["nombre"] = "Antonio" se pasaria asi: data(0,0) = "Nombre", data(0,1) = "Antonio"
Como arrays simples con separacion interna mediante dos puntos (:) :
data(0) = "Nombre: Antonio"
asi como listas
data(0) = Array("Antonio", "Juan", "Pedro")
La forma de usarlo:
response.write(json_encode(data))
Código:
' ***************************
' Codifica para lectura json
' ***************************
' Valores a tener en cuenta de VarType
'vbEmpty 0 Empty (sin inicializar)
'vbNull 1 Null (datos no válidos)
'vbInteger 2 Entero
'vbLong 3 Número entero largo
'vbSingle 4 Número de punto flotante de precisión simple
'vbDouble 5 Número de punto flotante de precisión doble
'vbCurrency 6 Moneda
'vbDate 7 Fecha
'vbString 8 Cadena
'vbObject 9 Objeto de automatización
'vbError 10 Error
'vbBoolean 11 Booleano
'vbByte 17 Byte
'vbArray 8192 o 8204 Matriz
' Estos dos para TODO
'vbVariant 12 Variant (usada sólo con matrices de tipo Variant)
'vbDataObject 13 Un objeto de acceso de datos
dim pasa
function json_encode(Arrstr)
dim n, s, a, campo, valor
dim tmp, dimen, esLista, final
'on error resume next
final = """"""
' Es null
if (VarType(Arrstr)=1) then
final = null
' es boolean
elseif VarType(Arrstr) = 11 then
final = false
if Arrstr = true then final = true
' Es array
elseif VarType(Arrstr) = 8192 or isArray(ArrStr) then
dimen = 1
' Chequeamos las dimensiones del array
on error resume next
if ubound(Arrstr,2) > 1 then
if err = 0 then dimen = 2
end if
on error goto 0
'chequeamos si es un objeto o una lista
s = ""
for n = 0 to Ubound(Arrstr, 1)
' Tomamos el valor de la fila
' Es un array multidimensional o simula uno asociativo
if dimen > 1 then
campo = json_encode(Arrstr(n,0))
if Trim(campo) <> "" then
valor = json_encode(Arrstr(n,1))
s = s & campo & ":" & valor & ","
end if
esLista = false
elseif instr(Arrstr(n),":") > 0 then
tmp = split(a,":")
campo = json_encode(tmp(0))
if Trim(campo) <> "" then
valor = json_encode(tmp(1))
s = s & campo & ":" & valor & ","
end if
esLista = false
else ' Es una lista
if Trim(Arrstr(n)) <> "" then s = s & json_encode(Arrstr(n)) & ","
esLista = true
end if
next
if not esLista then final = "{" else final = "[" end if
if len(s) > 1 then final = final & left(s, len(s)-1)
if not esLista then final = final & "}" else final = final & "]" end if
' Es escalar
elseif VarType(Arrstr) > 1 and VarType(Arrstr) < 9 then
valor = Arrstr
valor = cstr(valor)
' Float Type (must be .)
valor = replace(valor, ",", ".")
valor = replace(valor, vbCrLf, "\\n")
valor = replace(valor, vbCr, "\\n")
valor = replace(valor, vbLf, "\\n")
valor = replace(valor, "\\", "\\\")
valor = replace(valor, "/", "\\/")
valor = replace(valor, "\n", "\\n")
valor = replace(valor, "\t", "\\t")
valor = replace(valor, "\r", "\\r")
valor = replace(valor, "\b", "\\b")
valor = replace(valor, "\f", "\\f")
valor = replace(valor, """", "\""")
valor = """" & Trim(valor) & """"
final = valor
end if
'on error goto 0
json_encode = final
end function
__________________ "Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié - |