การแชร์ซอร์สโค้ดคลาส ASP JSON เพื่อนที่ต้องการสามารถอ้างอิงได้ คัดลอกรหัสรหัสดังต่อไปนี้:
-
'=================================================' = ===========
'ชื่อไฟล์: /Cls_Json.asp
'บทบาทไฟล์: ไฟล์คลาส JSON ของระบบ
' เวอร์ชันไฟล์: VBS JSON(JavaScript Object Notation) เวอร์ชัน 2.0.2
'การแก้ไขโปรแกรม: Cloud.L
' อัพเดตล่าสุด: 2009-05-12
'=================================================' = ===========
'แกนหลักของโปรแกรม: JSON อย่างเป็นทางการ http://www.json.org/
' บล็อกของผู้เขียน: http://www.cnode.cn
'=================================================' = ===========
คลาส Json_Cls
คอลเลกชันสาธารณะ
จำนวนสาธารณะ
Public QuotedVars 'ไม่ว่าจะเพิ่มเครื่องหมายคำพูดให้กับตัวแปรหรือไม่
ประเภทสาธารณะ ' 0 = วัตถุ 1 = อาร์เรย์
คลาสย่อยส่วนตัว_เริ่มต้น
ชุดคอลเลกชัน = Server.CreateObject(GP_ScriptingDictionary)
QuotedVars = จริง
จำนวน = 0
จบหมวดย่อย
Class_Terminate ย่อยส่วนตัว
ชุดคอลเลกชัน = ไม่มีเลย
จบหมวดย่อย
' เคาน์เตอร์
เคาน์เตอร์รับทรัพย์สินส่วนตัว
ตัวนับ = นับ
นับ = นับ + 1
สิ้นสุดคุณสมบัติ
'กำหนดประเภทวัตถุ
ทรัพย์สินสาธารณะให้ SetKind (ByVal fpKind)
เลือกกรณี LCase(fpKind)
กรณีวัตถุ:ชนิด=0
อาร์เรย์ของเคส:ชนิด=1
สิ้นสุดการเลือก
สิ้นสุดคุณสมบัติ
'-ข้อมูลเสียหาย
' -- คู่
ทรัพย์สินสาธารณะให้จับคู่(p, v)
ถ้า IsNull(p) แล้ว p = ตัวนับ
คอลเลกชัน(p) = โวลต์
สิ้นสุดคุณสมบัติ
ชุดทรัพย์สินสาธารณะคู่ (p, v)
ถ้า IsNull(p) แล้ว p = ตัวนับ
ถ้า TypeName(v) <> Json_Cls แล้ว
Err.Raise &hD คลาส: คลาส วัตถุคลาส: ' & TypeName(v) & '
สิ้นสุดถ้า
ตั้งค่าคอลเลกชัน(p) = v
สิ้นสุดคุณสมบัติ
คุณสมบัติเริ่มต้นสาธารณะรับคู่ (p)
ถ้า IsNull(p) แล้ว p = จำนวน - 1
ถ้า IsObject(Collection(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 ถึง Len(str)
พี=จริง
c = กลาง(str, i, 1)
สำหรับเจ = 0 ถึง 7
ถ้า c = Chr(aL1(j)) แล้ว
jsEncode = jsEncode & / & Chr(aL2(j))
พี = เท็จ
ออกเพื่อ
สิ้นสุดถ้า
ต่อไป
ถ้าพีแล้ว
ดิม เอ
ก = AscW(c)
ถ้า a > 31 และ a < 127 แล้ว
jsEncode = jsEncode & ค
อย่างอื่นถ้า a > -1 หรือ < 65535 แล้ว
jsEncode = jsEncode & /u & สตริง(4 - Len(Hex(a)), 0) & Hex(a)
สิ้นสุดถ้า
สิ้นสุดถ้า
ต่อไป
ฟังก์ชันสิ้นสุด
' กำลังแปลง
ฟังก์ชั่นสาธารณะไปยัง JSON (vPair)
เลือกเคส VarType(vPair)
กรณีที่ 1' โมฆะ
toJSON = โมฆะ
กรณีที่ 7 'วันที่
'yaz saati ปัญหา var
' jsValue = วันที่ใหม่( & รอบ ((vVal - #01/01/1970 02:00#) * 86400000) & )
toJSON = & CStr(vPair) &
สายเคส 8'
toJSON = & jsEncode(vPair) &
กรณีที่ 9 'วัตถุ
หรี่ bFI ฉัน
bFI=จริง
ถ้า vPair.Kind จากนั้น toJSON = toJSON & [ Else 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 ' จำนวนเต็ม DimensionUBound, Integer DimensionLBound
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
iDL = LBound(aBD, iBC)
iDU = UBound(aBD, iBC)
หรี่ sPB1, sPB2 ' สตริง PointBuffer1, สตริง PointBuffer2
ถ้า Err = 9 แล้ว
sPB1 = เอสพีที และ เอสพีเอส
สำหรับ i = 1 ถึง Len(sPB1)
ถ้าฉัน <> 1 ดังนั้น sPB2 = sPB2 & ,
sPB2 = sPB2 และกลาง(sPB1, i, 1)
ต่อไป
MultiArray = MultiArray & toJSON(Eval(aBD( & sPB2 & )))
อื่น
เอสพีที = เอสพีที และ เอสพีเอส
หลายอาร์เรย์ = หลายอาร์เรย์ & [
สำหรับ i = iDL ถึง iDU
MultiArray = MultiArray & MultiArray(aBD, iBC + 1, i, sPT)
ถ้าฉัน < iDU ดังนั้น MultiArray = MultiArray & ,
ต่อไป
หลายอาร์เรย์ = หลายอาร์เรย์ & ]
sPT = ซ้าย(sPT, iBC - 2)
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
ทรัพย์สินสาธารณะ GetToString
ToString = toJSON (ฉัน)
สิ้นสุดคุณสมบัติ
สาธารณะย่อยฟลัช
ถ้า TypeName(Response) <> ว่างเปล่าแล้ว
ตอบกลับเขียน (ToString)
ElseIf WScript <> ว่างเปล่าแล้ว
WScript.Echo(ToString)
สิ้นสุดถ้า
จบหมวดย่อย
โคลนฟังก์ชั่นสาธารณะ
ตั้งโคลน = ColClone (ฉัน)
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นส่วนตัว ColClone (คอร์)
ดิม jsc,i
ตั้งค่า 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)
ติ่ม 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
ฟังก์ชันสิ้นสุด
จบคลาส
-