Обмен исходным кодом класса ASP JSON, друзья, нуждающиеся в этом, могут обратиться к нему. Скопируйте код кода следующим образом:
<%
'============================================== = ===========
'Имя файла: /Cls_Json.asp
'Роль файла: файл системного класса JSON
' Версия файла: VBS JSON (нотация объекта JavaScript), версия 2.0.2.
'Модификация программы: Cloud.L
' Последнее обновление: 12 мая 2009 г.
'============================================== = ===========
'Ядро программы: официальный JSON http://www.json.org/
' Блог автора: http://www.cnode.cn
'============================================== = ===========
Класс Json_Cls
Публичная коллекция
Общественный подсчет
Public QuotedVars 'Добавлять ли кавычки к переменным
Публичный вид '0 = объект, 1 = массив
Частный подкласс_инициализировать
Установить коллекцию = Server.CreateObject(GP_ScriptingDictionary)
QuotedVars = Истина
Количество = 0
Конец субтитра
Частный подкласс_Terminate
Установить коллекцию = Ничего
Конец субтитра
' прилавок
Частная собственность Get Counter
Счетчик=Счетчик
Счет = Счет + 1
Конечная собственность
'Установить тип объекта
Открытое свойство Let SetKind(ByVal fpKind)
Выберите регистр LCase(fpKind)
Объект дела: Вид = 0
Массив регистров: Вид = 1
Конец выбора
Конечная собственность
'- искажение данных
' -- пара
Открытая собственность Let Pair(p, v)
Если IsNull(p), то p = счетчик
Коллекция(p) = v
Конечная собственность
Пара набора общедоступных свойств (p, v)
Если IsNull(p), то p = счетчик
Если TypeName(v) <> Json_Cls Тогда
Err.Raise &hD, class: class, class object: ' & TypeName(v) & '
Конец, если
Установить Коллекция(p) = v
Конечная собственность
Публичное свойство по умолчанию Получить пару (p)
Если IsNull(p) Тогда p = Count - 1
Если IsObject(Коллекция(p)) Тогда
Установить пару = Коллекция(p)
Еще
Пара = Коллекция(p)
Конец, если
Конечная собственность
' -- пара
общественный нижний чистый
Коллекция.RemoveAll
Конец субтитра
Публичное удаление субтитров (vProp)
Коллекция.Удалить vProp
Конец субтитра
'неверное искажение данных
'кодировка
Открытая функция jsEncode(str)
Дим i, j, aL1, aL2, c, p
aL1 = Массив(&h22, &h5C, &h2F, &h08, &h0C, &h0A, &h0D, &h09)
aL2 = Массив(&h22, &h5C, &h2F, &h62, &h66, &h6E, &h72, &h74)
Для i = 1 To Len(str)
р=Истина
c = Mid(str, i, 1)
Для j = от 0 до 7
Если c = Chr(aL1(j)) Тогда
jsEncode = jsEncode &/& Chr(aL2(j))
р = Ложь
Выход для
Конец, если
Следующий
Если п Тогда
Дим а
а = АскВ(с)
Если а > 31 и а < 127 Тогда
jsEncode = jsEncode & c
ИначеЕсли a > -1 или a < 65535 Тогда
jsEncode = jsEncode & /u & String(4 - Len(Hex(a)), 0) & Hex(a)
Конец, если
Конец, если
Следующий
Конечная функция
'преобразование
Открытая функция toJSON(vPair)
Выберите Case VarType(vPair)
Случай 1' Ноль
toJSON = ноль
Случай 7 'Дата
'yaz saati проблемы вар
' jsValue = новая дата( & Round((vVal - #01/01/1970 02:00#) * 86400000) & )
toJSON = & CStr(vPair) &
Случай 8-футовой струны
toJSON = & jsEncode(vPair) &
Случай 9 «Объект
Дим bFI,i
бФИ=Истина
Если vPair.Kind Тогда toJSON = toJSON & [ Иначе toJSON = toJSON & {
Для каждого i в vPair.Collection
Если bFI Тогда bFI = False Иначе toJSON = toJSON & ,
Если vPair.Kind Тогда
toJSON = toJSON и toJSON(vPair(i))
Еще
Если QuotedVars Тогда
toJSON = toJSON & & i & : & toJSON(vPair(i))
Еще
toJSON = toJSON & i & : & toJSON(vPair(i))
Конец, если
Конец, если
Следующий
Если vPair.Kind Тогда toJSON = toJSON & ] Иначе toJSON = toJSON & }
Случай 11
Если vPair Тогда toJSON = true Иначе toJSON = false
Дело 12, 8192, 8204
Дим сЭБ
toJSON = MultiArray(vPair, 1, , sEB)
Другое дело
toJSON = Заменить(vPair, ,, .)
Завершить выбор
Конечная функция
Открытая функция MultiArray(aBD, iBC, sPS, ByRef sPT) ' Array BoDy, Integer BaseCount, String PoSition
Dim iDU, iDL, i ' Integer DimensionUBound, Integer DimensionLBound
При ошибке Возобновить Далее
iDL = LBound(aBD, iBC)
iDU = UBound(aBD, iBC)
Dim spB1, spB2 ' Строка PointBuffer1, Строка PointBuffer2
Если Err = 9 Тогда
СПБ1 = СПТ и СПС
Для i = 1 к Len(sPB1)
Если i <> 1, то sPB2 = sPB2 & ,
sPB2 = sPB2 и Mid(sPB1, i, 1)
Следующий
MultiArray = MultiArray & toJSON(Eval(aBD( & sPB2 & )))
Еще
СПТ = СПТ и СПС
Мультимассив = Мультимассив & [
Для i = iDL в iDU
MultiArray = MultiArray & MultiArray(aBD, iBC + 1, i, sPT)
Если i < iDU, то MultiArray = MultiArray &,
Следующий
Мультимассив = Мультимассив & ]
sPT = Левый(sPT, iBC - 2)
Конец, если
Конечная функция
Открытая собственность GetToString
ToString = toJSON(Me)
Конечная собственность
Общественный смыв
Если ИмяТипа(Ответ) <> Пусто Тогда
Response.Write(ToString)
ИначеЕсли WScript <> Пусто Тогда
WScript.Echo(ToString)
Конец, если
Конец субтитра
Клон публичной функции
Установить клон = ColClone(Me)
Конечная функция
Частная функция ColClone (ядро)
ООО «Дим», я
Установить jsc = Новый Json_Cls
jsc.Kind = core.Kind
Для каждого i в core.Collection
Если IsObject(core(i)) Тогда
Установите jsc(i) = ColClone(core(i))
Еще
jsc(i) = ядро(i)
Конец, если
Следующий
Установите ColClone = jsc
Конечная функция
Открытая функция QueryToJSON(dbc, sql)
Dim rs, jsa,col
Установите rs = dbc.Execute(sql)
Установить jsa = Новый Json_Cls
jsa.SetKind=массив
Пока нет (rs.EOF или rs.BOF)
Установить jsa(Null) = Новый Json_Cls
jsa(Null).SetKind=объект
Для каждого столбца в rs.Fields
jsa(Null)(col.Name) = col.Value
Следующий
RS.MoveNext
Венд
Установите QueryToJSON = jsa
Конечная функция
Конечный класс
%>