• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP JSON类源码分享
    复制代码 代码如下:

    %
    '============================================================
    ' 文件名称 : /Cls_Json.asp
    ' 文件作用 : 系统JSON类文件
    ' 文件版本 : VBS JSON(JavaScript Object Notation) Version 2.0.2
    ' 程序修改 : Cloud.L
    ' 最后更新 : 2009-05-12
    '============================================================
    ' 程序核心 : JSON官方 http://www.json.org/
    ' 作者博客 : Http://www.cnode.cn
    '============================================================
    Class Json_Cls

    Public Collection
    Public Count
    Public QuotedVars '是否为变量增加引号
    Public Kind ' 0 = object, 1 = array

    Private Sub Class_Initialize
    Set Collection = Server.CreateObject(GP_ScriptingDictionary)
    QuotedVars = True
    Count = 0
    End Sub

    Private Sub Class_Terminate
    Set Collection = Nothing
    End Sub

    ' counter
    Private Property Get Counter
    Counter = Count
    Count = Count + 1
    End Property

    ' 设置对象类型
    Public Property Let SetKind(ByVal fpKind)
    Select Case LCase(fpKind)
    Case "object":Kind=0
    Case "array":Kind=1
    End Select
    End Property

    ' - data maluplation
    ' -- pair
    Public Property Let Pair(p, v)
    If IsNull(p) Then p = Counter
    Collection(p) = v
    End Property

    Public Property Set Pair(p, v)
    If IsNull(p) Then p = Counter
    If TypeName(v) > "Json_Cls" Then
    Err.Raise hD, "class: class", "class object: '" TypeName(v) "'"
    End If
    Set Collection(p) = v
    End Property

    Public Default Property Get Pair(p)
    If IsNull(p) Then p = Count - 1
    If IsObject(Collection(p)) Then
    Set Pair = Collection(p)
    Else
    Pair = Collection(p)
    End If
    End Property
    ' -- pair
    Public Sub Clean
    Collection.RemoveAll
    End Sub

    Public Sub Remove(vProp)
    Collection.Remove vProp
    End Sub
    ' data maluplation

    ' encoding
    Public Function jsEncode(str)
    Dim i, j, aL1, aL2, c, p

    aL1 = Array(h22, h5C, h2F, h08, h0C, h0A, h0D, h09)
    aL2 = Array(h22, h5C, h2F, h62, h66, h6E, h72, h74)
    For i = 1 To Len(str)
    p = True
    c = Mid(str, i, 1)
    For j = 0 To 7
    If c = Chr(aL1(j)) Then
    jsEncode = jsEncode "\" Chr(aL2(j))
    p = False
    Exit For
    End If
    Next

    If p Then
    Dim a
    a = AscW(c)
    If a > 31 And a 127 Then
    jsEncode = jsEncode c
    ElseIf a > -1 Or a 65535 Then
    jsEncode = jsEncode "\u" String(4 - Len(Hex(a)), "0") Hex(a)
    End If
    End If
    Next
    End Function

    ' converting
    Public Function toJSON(vPair)
    Select Case VarType(vPair)
    Case 1 ' Null
    toJSON = "null"
    Case 7 ' Date
    ' yaz saati problemi var
    ' jsValue = "new Date(" Round((vVal - #01/01/1970 02:00#) * 86400000) ")"
    toJSON = """" CStr(vPair) """"
    Case 8 ' String
    toJSON = """" jsEncode(vPair) """"
    Case 9 ' Object
    Dim bFI,i
    bFI = True
    If vPair.Kind Then toJSON = toJSON "[" Else toJSON = toJSON "{"
    For Each i In vPair.Collection
    If bFI Then bFI = False Else toJSON = toJSON ","

    If vPair.Kind Then
    toJSON = toJSON toJSON(vPair(i))
    Else
    If QuotedVars Then
    toJSON = toJSON """" i """:" toJSON(vPair(i))
    Else
    toJSON = toJSON i ":" toJSON(vPair(i))
    End If
    End If
    Next
    If vPair.Kind Then toJSON = toJSON "]" Else toJSON = toJSON "}"
    Case 11
    If vPair Then toJSON = "true" Else toJSON = "false"
    Case 12, 8192, 8204
    Dim sEB
    toJSON = MultiArray(vPair, 1, "", sEB)
    Case Else
    toJSON = Replace(vPair, ",", ".")
    End select
    End Function

    Public Function MultiArray(aBD, iBC, sPS, ByRef sPT) ' Array BoDy, Integer BaseCount, String PoSition
    Dim iDU, iDL, i ' Integer DimensionUBound, Integer DimensionLBound
    On Error Resume Next
    iDL = LBound(aBD, iBC)
    iDU = UBound(aBD, iBC)

    Dim sPB1, sPB2 ' String PointBuffer1, String PointBuffer2
    If Err = 9 Then
    sPB1 = sPT sPS
    For i = 1 To Len(sPB1)
    If i > 1 Then sPB2 = sPB2 ","
    sPB2 = sPB2 Mid(sPB1, i, 1)
    Next
    MultiArray = MultiArray toJSON(Eval("aBD(" sPB2 ")"))
    Else
    sPT = sPT sPS
    MultiArray = MultiArray "["
    For i = iDL To iDU
    MultiArray = MultiArray MultiArray(aBD, iBC + 1, i, sPT)
    If i iDU Then MultiArray = MultiArray ","
    Next
    MultiArray = MultiArray "]"
    sPT = Left(sPT, iBC - 2)
    End If
    End Function

    Public Property Get ToString
    ToString = toJSON(Me)
    End Property

    Public Sub Flush
    If TypeName(Response) > "Empty" Then
    Response.Write(ToString)
    ElseIf WScript > Empty Then
    WScript.Echo(ToString)
    End If
    End Sub

    Public Function Clone
    Set Clone = ColClone(Me)
    End Function

    Private Function ColClone(core)
    Dim jsc, i
    Set jsc = New Json_Cls
    jsc.Kind = core.Kind
    For Each i In core.Collection
    If IsObject(core(i)) Then
    Set jsc(i) = ColClone(core(i))
    Else
    jsc(i) = core(i)
    End If
    Next
    Set ColClone = jsc
    End Function

    Public Function QueryToJSON(dbc, sql)
    Dim rs, jsa,col
    Set rs = dbc.Execute(sql)
    Set jsa = New Json_Cls
    jsa.SetKind="array"
    While Not (rs.EOF Or rs.BOF)
    Set jsa(Null) = New Json_Cls
    jsa(Null).SetKind="object"
    For Each col In rs.Fields
    jsa(Null)(col.Name) = col.Value
    Next
    rs.MoveNext
    Wend
    Set QueryToJSON = jsa
    End Function

    End Class
    %>
    您可能感兴趣的文章:
    • ASP调用WebService转化成JSON数据,附json.min.asp
    • asp实现读取数据库输出json代码
    • asp对复杂json的解析一定要注意要点
    • ASP JSON类文件的使用方法
    • asp下以Json获取中国天气网天气的代码
    • ASP Json Parser修正版
    • ASP 处理JSON数据的实现代码
    上一篇:ASP 使用Filter函数来检索数组的实现代码
    下一篇:ASP JSON类文件的使用方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ASP JSON类源码分享 ASP,JSON,类,源码,分享,ASP,