Asp中JSON的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。来自:http://blog.csdn.net/qxs965266509 https://blog.csdn.net/qxs965266509/article/details/46873175

推荐使用(后续发现的):https://www.newtonsoft.com/json

我对asp完全不懂,由于需要使用json的结构,就研究了一下asp的json的使用,拼接一个json的字符串。

测试用例中使用到了一个lib文件:

Json_2.0.3.asp


<%
'
'       VBS JSON 2.0.3
'       Copyright (c) 2009 Tu餽ul Topuz
'       Under the MIT (MIT-LICENSE.txt) license.
'
 
Const JSON_OBJECT       = 0
Const JSON_ARRAY        = 1
 
Class jsCore
        Public Collection
        Public Count
        Public QuotedVars
        Public Kind ' 0 = object, 1 = array
 
        Private Sub Class_Initialize
                Set Collection = CreateObject("Scripting.Dictionary")
                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
 
        ' - 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) <> "jsCore" Then
                        Err.Raise &hD, "class: class", "Incompatible types: '" & 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
        Function jsEncode(str)
                Dim charmap(127), haystack()
                charmap(8)  = "\b"
                charmap(9)  = "\t"
                charmap(10) = "\n"
                charmap(12) = "\f"
                charmap(13) = "\r"
                charmap(34) = "\"""
                charmap(47) = "\/"
                charmap(92) = "\\"
 
                Dim strlen : strlen = Len(str) - 1
                ReDim haystack(strlen)
 
                Dim i, charcode
                For i = 0 To strlen
                        haystack(i) = Mid(str, i + 1, 1)
 
                        charcode = AscW(haystack(i)) And 65535
                        If charcode < 127 Then
                                If Not IsEmpty(charmap(charcode)) Then
                                        haystack(i) = charmap(charcode)
                                ElseIf charcode < 32 Then
                                        haystack(i) = "\u" & Right("000" & Hex(charcode), 4)
                                End If
                        Else
                                haystack(i) = "\u" & Right("000" & Hex(charcode), 4)
                        End If
                Next
 
                jsEncode = Join(haystack, "")
        End Function
 
        ' converting
        Public Function toJSON(vPair)
                Select Case VarType(vPair)
                        Case 0  ' Empty
                                toJSON = "null"
                        Case 1  ' Null
                                toJSON = "null"
                        Case 7  ' Date
                                ' toJSON = "new Date(" & (vPair - CDate(25569)) * 86400000 & ")"        ' let in only utc time
                                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
                                toJSON = RenderArray(vPair, 1, "")
                        Case Else
                                toJSON = Replace(vPair, ",", ".")
                End select
        End Function
 
        Function RenderArray(arr, depth, parent)
                Dim first : first = LBound(arr, depth)
                Dim last : last = UBound(arr, depth)
 
                Dim index, rendered
                Dim limiter : limiter = ","
 
                RenderArray = "["
                For index = first To last
                        If index = last Then
                                limiter = ""
                        End If
 
                        On Error Resume Next
                        rendered = RenderArray(arr, depth + 1, parent & index & "," )
 
                        If Err = 9 Then
                                On Error GoTo 0
                                RenderArray = RenderArray & toJSON(Eval("arr(" & parent & index & ")")) & limiter
                        Else
                                RenderArray = RenderArray & rendered & "" & limiter
                        End If
                Next
                RenderArray = RenderArray & "]"
        End Function
 
        Public Property Get jsString
                jsString = toJSON(Me)
        End Property
 
        Sub Flush
                If TypeName(Response) <> "Empty" Then
                        Response.Write(jsString)
                ElseIf WScript <> Empty Then
                        WScript.Echo(jsString)
                End If
        End Sub
 
        Public Function Clone
                Set Clone = ColClone(Me)
        End Function
 
        Private Function ColClone(core)
                Dim jsc, i
                Set jsc = new jsCore
                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
 
End Class
 
Function jsObject
        Set jsObject = new jsCore
        jsObject.Kind = JSON_OBJECT
End Function
 
Function jsArray
        Set jsArray = new jsCore
        jsArray.Kind = JSON_ARRAY
End Function
 
Function toJSON(val)
        toJSON = (new jsCore).toJSON(val)
End Function
%>

测试用例:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<% 

Response.ContentType = "text/JSON"
%>
<!--#include file="Json_2.0.3.asp"-->
<%
Dim ar
Set ar = jsArray()
Dim Jsons
Set Jsons = jsObject()
Jsons("Name") = "1"
Jsons("Age") = 10
   

ar(0)=Jsons.jsString
Jsons("Name") = "2"
Jsons("Age") = 20
ar(1)=Jsons.jsString
Jsons("Name") = "3"
Jsons("Age") = 30
ar(2)=Jsons.jsString
Jsons("Name") = "4"
Jsons("Age") = 40
ar(3)=Jsons.jsString
Jsons("Name") = "5"
Jsons("Age") = 50
ar(4)=Jsons.jsString
Jsons("Name") = "6"
Jsons("Age") = 60
ar(5)=Jsons.jsString
Jsons("Name") = "7"
Jsons("Age") = 70
ar(6)=Jsons.jsString
Jsons("Name") = "8"
Jsons("Age") = 80
ar(7)=Jsons.jsString
Jsons("Name") = "9"
Jsons("Age") = 90
ar(8)=Jsons.jsString
Jsons("Name") = "10"
Jsons("Age") = 100
ar(9)=Jsons.jsString
'Response.write ar(0)
'Response.write ar(1)
'Response.write ar(2)
Response.write ar.jsString

Response.Write "<BR>"


DIM myArray
myArray = Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct", "Nov","Dec")
'Response.write myArray(0)

Dim sc
Set sc = CreateObject("MSScriptControl.ScriptControl")
Dim str
'str = "{'uid':'1','username':'abc','email':'123@163.com'}"
str="['aaa','bbb','ccc']"
sc.Language = "JScript"
sc.AddCode "var o = " & str & ";"
Response.Write sc.Eval("o[1]")

	  

   


Set Jsons = Nothing

%>

由于对asp了解太少,文章写的不够全面,不过这已经可以满足很多json的结构了。

希望可以帮助到大家,对你有帮助或者觉得值得借鉴的,可以在下方点个赞!谢谢!!!

如有转载,请著名来自http://blog.csdn.net/qxs965266509

展开阅读全文

没有更多推荐了,返回首页