Berbagi kode sumber kelas ASP JSON, teman yang membutuhkan dapat merujuknya. Copy kode kodenya sebagai berikut:
<%
' ===== = ===========
'Nama file: /Cls_Json.asp
'Peran file: file kelas JSON sistem
' Versi file: VBS JSON (Notasi Objek JavaScript) Versi 2.0.2
'Modifikasi program: Cloud.L
' Terakhir diperbarui: 12-05-2009
' ===== = ===========
'Inti program: JSON resmi http://www.json.org/
' Blog penulis: http://www.cnode.cn
' ===== = ===========
Kelas JSON_Cls
Koleksi Umum
Hitungan Publik
Public QuotedVars 'Apakah akan menambahkan tanda kutip ke variabel
Jenis Publik ' 0 = objek, 1 = array
Sub Kelas Pribadi_Inisialisasi
Set Koleksi = Server.CreateObject(GP_ScriptingDictionary)
QuotedVars = Benar
Hitung = 0
Akhiri Sub
Sub Kelas Pribadi_Terminate
Set Koleksi = Tidak Ada
Akhiri Sub
' menangkal
Konter Dapatkan Properti Pribadi
Penghitung = Hitung
Hitungan = Hitungan + 1
Properti Akhir
'Setel jenis objek
Properti Publik Biarkan SetKind(ByVal fpKind)
Pilih Kasus LCase (fpKind)
Objek kasus:Jenis=0
Array kasus:Jenis=1
Pilihan Akhir
Properti Akhir
'-maluplasi data
' -- pasangan
Properti Umum Biarkan Berpasangan (p, v)
Jika IsNull(p) Maka p = Penghitung
Koleksi(p) = v
Properti Akhir
Pasangan Kumpulan Properti Publik (p, v)
Jika IsNull(p) Maka p = Penghitung
Jika TypeName(v) <> Json_Cls Lalu
Err.Naikkan &hD, kelas: kelas, objek kelas: ' & TypeName(v) & '
Akhiri Jika
Himpunan Koleksi(p) = v
Properti Akhir
Properti Default Publik Dapatkan Pasangan (p)
Jika IsNull(p) Maka p = Hitung - 1
Jika IsObject(Koleksi(p)) Lalu
Set Pasangan = Koleksi(p)
Kalau tidak
Pasangan = Koleksi(p)
Akhiri Jika
Properti Akhir
' -- pasangan
Sub Bersih Umum
Koleksi.HapusSemua
Akhiri Sub
Penghapusan Sub Publik (vProp)
Koleksi.Hapus vProp
Akhiri Sub
'maluplasi data
'pengkodean
Fungsi Publik jsEncode(str)
Redupkan i, j, aL1, aL2, c, hal
aL1 = Array(&h22, &h5C, &h2F, &h08, &h0C, &h0A, &h0D, &h09)
aL2 = Array(&h22, &h5C, &h2F, &h62, &h66, &h6E, &h72, &h74)
Untuk i = 1 Ke Len(str)
p=Benar
c = Tengah(str, i, 1)
Untuk j = 0 Sampai 7
Jika c = Chr(aL1(j)) Maka
jsEncode = jsEncode & / & Chr(aL2(j))
p = Salah
Keluar Untuk
Akhiri Jika
Berikutnya
Jika p Lalu
Redupkan a
a = AscW(c)
Jika a > 31 Dan a < 127 Maka
jsEncode = jsEncode & c
LainJika a > -1 Atau a < 65535 Maka
jsEncode = jsEncode & /u & String(4 - Len(Hex(a)), 0) & Hex(a)
Akhiri Jika
Akhiri Jika
Berikutnya
Fungsi Akhir
' mengkonversi
Fungsi Publik ke JSON (vPair)
Pilih Kasus VarType (vPair)
Kasus 1' Batal
toJSON = nol
Kasus 7 'Tanggal
'yaz saat ini ada masalah var
' jsValue = Tanggal baru( & Putaran((vVal - #01/01/1970 02:00#) * 86400000) & )
toJSON = & CStr(vPair) &
Senar Kasus 8'
toJSON = & jsEncode(vPair) &
Kasus 9 'Objek
Redupkan bFI,i
bFI=Benar
Jika vPair.Kind Maka toJSON = toJSON & [ Else toJSON = toJSON & {
Untuk Setiap i Di vPair.Collection
Jika bFI Maka bFI = False Else toJSON = toJSON & ,
Jika vPair.Jenis Lalu
toJSON = toJSON & toJSON(vPair(i))
Kalau tidak
Jika DikutipVars Lalu
toJSON = toJSON & & i & : & toJSON(vPair(i))
Kalau tidak
toJSON = toJSON & i & : & toJSON(vPair(i))
Akhiri Jika
Akhiri Jika
Berikutnya
Jika vPair.Kind Kemudian toJSON = toJSON & ] Else toJSON = toJSON & }
Kasus 11
Jika vPair Maka toJSON = true Else toJSON = false
Kasus 12, 8192, 8204
Redupkan seB
toJSON = MultiArray(vPair, 1, , seEB)
Kasus Lain
toJSON = Ganti(vPair, ,, .)
Akhiri pilihan
Fungsi Akhir
Fungsi Publik MultiArray(aBD, iBC, sPS, ByRef sPT) ' Badan Array, Hitungan Dasar Integer, Posisi String
Redupkan iDU, iDL, i ' Integer DimensionUBound, Integer DimensionLBound
Pada Kesalahan Lanjutkan Berikutnya
iDL = LBound(aBD, iBC)
iDU = UBound(aBD, iBC)
Redupkan sPB1, sPB2 ' String PointBuffer1, String PointBuffer2
Jika Err = 9 Maka
sPB1 = sPT & sPS
Untuk i = 1 Ke Len(sPB1)
Jika i <> 1 Maka sPB2 = sPB2 & ,
sPB2 = sPB2 & Tengah(sPB1, i, 1)
Berikutnya
MultiArray = MultiArray & toJSON(Eval(aBD( & sPB2 & )))
Kalau tidak
sPT = sPT & sPS
MultiArray = MultiArray & [
Untuk i = iDL Ke iDU
MultiArray = MultiArray & MultiArray(aBD, iBC + 1, i, sPT)
Jika i < iDU Maka MultiArray = MultiArray & ,
Berikutnya
MultiArray = MultiArray & ]
sPT = Kiri(sPT, iBC - 2)
Akhiri Jika
Fungsi Akhir
GetToString Properti Publik
ToString = toJSON(Saya)
Properti Akhir
Sub Flush Publik
Jika TypeName(Respon) <> Kosong Lalu
Respon.Tulis(ToString)
ElseIf WScript <> Kosongkan Lalu
WScript.Echo(ToString)
Akhiri Jika
Akhiri Sub
Klon Fungsi Publik
Setel Klon = ColClone(Saya)
Fungsi Akhir
Fungsi Pribadi ColClone (inti)
Redupkan jsc,i
Setel jsc = Json_Cls baru
jsc.Jenis = inti.Jenis
Untuk Setiap i Dalam inti.Koleksi
Jika IsObject(inti(i)) Lalu
Atur jsc(i) = ColClone(inti(i))
Kalau tidak
jsc(i) = inti(i)
Akhiri Jika
Berikutnya
Atur ColClone = jsc
Fungsi Akhir
Fungsi Publik QueryToJSON(dbc, sql)
Redupkan rs, jsa,kol
Setel rs = dbc.Jalankan(sql)
Setel jsa = Json_Cls baru
jsa.SetKind=array
Meskipun Tidak (rs.EOF Atau rs.BOF)
Atur jsa(Null) = Json_Cls baru
jsa(Null).SetKind=objek
Untuk Setiap col Di rs.Fields
jsa(Null)(col.Nama) = col.Nilai
Berikutnya
rs.MoveNext
Pergi ke
Setel QueryToJSON = jsa
Fungsi Akhir
Kelas Akhir
%>