مشاركة كود مصدر فئة ASP JSON، يمكن للأصدقاء المحتاجين الرجوع إليها. انسخ رمز الكود كما يلي:
<%
'======================================================================== = ===========
'اسم الملف: /Cls_Json.asp
'دور الملف: ملف فئة النظام JSON
إصدار الملف: VBS JSON (ترميز كائن JavaScript) الإصدار 2.0.2
'تعديل البرنامج: Cloud.L
آخر تحديث: 12-05-2009
'======================================================================== = ===========
'البرنامج الأساسي: مسؤول JSON http://www.json.org/
مدونة المؤلف: http://www.cnode.cn
'======================================================================== = ===========
فئة Json_Cls
المجموعة العامة
العد العام
Public QuotedVars 'ما إذا كان سيتم إضافة علامات الاقتباس إلى المتغيرات
النوع العام '0 = كائن، 1 = مصفوفة
فئة فرعية خاصة_تهيئة
مجموعة المجموعة = Server.CreateObject(GP_ScriptingDictionary)
QuotedVars = صحيح
العدد = 0
نهاية الفرعية
فئة فرعية خاصة_إنهاء
مجموعة المجموعة = لا شيء
نهاية الفرعية
' عداد
الملكية الخاصة احصل على العداد
العداد=العد
العدد = العدد + 1
نهاية الملكية
"تعيين نوع الكائن."
الملكية العامة دع SetKind (ByVal fpKind)
حدد حالة LCase(fpKind)
كائن الحالة: النوع = 0
مجموعة الحالة: النوع = 1
إنهاء التحديد
نهاية الملكية
'- سوء البيانات
' -- زوج
ملكية عامة دع زوجًا (ع، ت)
إذا IsNull(p) ثم p = العداد
المجموعة (ع) = v
نهاية الملكية
زوج مجموعة الملكية العامة (ع، ت)
إذا IsNull(p) ثم p = العداد
إذا كان TypeName(v) <> Json_Cls إذن
Err.Raise &hD، الفئة: فئة، كائن الفئة: ' & TypeName(v) & '
نهاية إذا
مجموعة المجموعة (ع) = v
نهاية الملكية
الخاصية الافتراضية العامة احصل على زوج (ع)
إذا IsNull(p) ثم p = Count - 1
إذا كان IsObject(Collection(p)) إذن
تعيين الزوج = المجموعة (ع)
آخر
زوج = مجموعة (ع)
نهاية إذا
نهاية الملكية
' -- زوج
تنظيف فرعي عام
Collection.RemoveAll
نهاية الفرعية
إزالة فرعية عامة (vProp)
Collection.Remove vProp
نهاية الفرعية
'سوء استخدام البيانات
"الترميز."
الوظيفة العامة jsEncode(str)
ديم ط، ي، aL1، aL2، ج، ص
aL1 = صفيف (&h22، &h5C، &h2F، &h08، &h0C، &h0A، &h0D، &h09)
aL2 = صفيف(&h22, &h5C, &h2F, &h62, &h66, &h6E, &h72, &h74)
لأني = 1 إلى لين (شارع)
ع = صحيح
ج = منتصف (شارع، ط، 1)
ل ي = 0 إلى 7
إذا كان c = Chr(aL1(j)) إذن
jsEncode = jsEncode & / & Chr(aL2(j))
ع = خطأ
الخروج ل
نهاية إذا
التالي
إذا ع ثم
خافت أ
أ = تصاعدي (ج)
إذا كان a> 31 و <127 ثم
jsEncode = jsEncode & c
ElseIf a> -1 أو <65535 ثم
jsEncode = jsEncode & /u & String(4 - Len(Hex(a)), 0) & Hex(a)
نهاية إذا
نهاية إذا
التالي
وظيفة النهاية
"تحويل
الوظيفة العامة لـJSON(vPair)
حدد نوع الحالة VarType(vPair)
الحالة 1 لاغية
toJSON = null
الحالة 7 التاريخ
'ياز ساعاتي مشكلة فار
' jsValue = التاريخ الجديد( & Round((vVal - #01/01/1970 02:00#) * 86400000) & )
toJSON = & CStr(vPair) &
حالة 8' سلسلة
toJSON = & jsEncode(vPair) &
الحالة 9 'الكائن
خافت BFI، ط
بفي = صحيح
إذا كان vPair.Kind ثم toJSON = toJSON & [ Else toJSON = toJSON & {
لكل i في vPair.Collection
إذا كانت bFI ثم bFI = خطأ، وإلا فإن 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 = صحيحًا، وإلا فإن 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 'String PointBuffer1, String PointBuffer2
إذا كان الخطأ = 9 إذن
sPB1 = sPT وsPS
لأني = 1 إلى لين (sPB1)
إذا كنت <> 1 ثم sPB2 = sPB2 & ,
sPB2 = sPB2 ومتوسط (sPB1، i، 1)
التالي
MultiArray = MultiArray & toJSON(Eval(aBD( & sPB2 & )))
آخر
سبت = سبت و سبس
MultiArray = MultiArray & [
لأني = iDL إلى iDU
MultiArray = MultiArray وMultiArray(aBD, iBC + 1, i, sPT)
إذا كنت < iDU ثم MultiArray = MultiArray & ,
التالي
MultiArray = MultiArray &]
sPT = اليسار (sPT، iBC - 2)
نهاية إذا
وظيفة النهاية
الملكية العامة GetToString
ToString = toJSON(Me)
نهاية الملكية
تدفق فرعي عام
إذا كان TypeName(Response) <> فارغًا إذن
الاستجابة.الكتابة (ToString)
ElseIf WScript <> فارغ بعد ذلك
WScript.Echo(ToString)
نهاية إذا
نهاية الفرعية
استنساخ الوظيفة العامة
تعيين استنساخ = ColClone (أنا)
وظيفة النهاية
وظيفة خاصة ColClone (الأساسية)
خافت هيئة الأوراق المالية، ط
تعيين jsc = جديد Json_Cls
jsc.Kind = core.Kind
لكل i في core.Collection
إذا كان IsObject(core(i)) إذن
تعيين jsc(i) = ColClone(core(i))
آخر
هيئة الأوراق المالية (ط) = الأساسية (ط)
نهاية إذا
التالي
تعيين ColClone = jsc
وظيفة النهاية
استعلام الوظيفة العامةToJSON (dbc، sql)
خافت RS، JSA، العقيد
تعيين rs = dbc.Execute(sql)
تعيين jsa = جديد Json_Cls
jsa.SetKind=array
بينما لا (rs.EOF أو rs.BOF)
تعيين jsa(Null) = جديد Json_Cls
jsa(Null).SetKind=object
لكل عمود في حقول rs
jsa(Null)(col.Name) = col.Value
التالي
rs.MoveNext
ويند
قم بتعيين QueryToJSON = jsa
وظيفة النهاية
نهاية الفصل
%>