爱恩asp生成json数据

ASP   2024-12-21 15:37   61   0  

使用示例:

<!--#include file="json.inc"-->
<%dim json,json1,json2,json3,jsonStrset json=new Aien_Json				'定义主json对象json.JsonType="object"				'json数据结构为对象json.addData "name","panzhiming"		'添加数据json.addData "isboy",truejson.addData "age",23json.addData "luckyNumber",Array(34,31,42)set json2=new Aien_Json				'定义一个json子对象json2.JsonType="object"				'数据结构为对象json2.addData "wife","xiaoming"		'添加数据json2.addData "school","miliangxiaoxue"
	set json3=new Aien_Json				'定义一个json子对象json3.JsonType="object"				'数据结构为对象json3.addData "chinese",85			'添加数据json3.addData "english",90
		set json1=new Aien_Json				'定义一个json子对象json1.JsonType="array"				'数据结构为数组json1.addData "color1","green"		'添加数据json1.addData "color2","red"json2.addData "classes",json3		'把json3添加到json2中,键名为classes	json.addData "colors",json1			'把json1添加到json中,键名为colorsjson.addData "others",json2			'把json2添加到json中,键名为othersjsonStr=json.getJson(json)			'获取最后生成的json字符串,本函数只有第一次调用有效set json3=nothingset json2=nothingset json1=nothingset json=nothing'//输入生成数据Response.write jsonStr' jsonStr={
	' name:"panzhiming",
	' isboy:true,
	' age:23,
	' luckyNumber:[34,31,42],
	' colors:["green","red"],
	' others:{
		' wife:"xiaoming",
		' school:"miliangxiaoxue",
		' classes:{chinese:85,english:90}
	' }' }%>


类文件josn.inc:

<%
'艾恩Asp生成Json数据类
'除jsEncode函数为json官方类函数外,其他内容均原创,转载请注明出处
'http://www.ii-home.cn  QQ:1034555083 Email:zhanghuiguoanlige@126.com
class Aien_Json
	private mCollection,mJsonType
	Public Property Get Collection()
		set Collection = mCollection
	End Property
	
 	Public Property Let JsonType(mData)
		if lcase(mData)="object" then
			mJsonType = true
		elseif lcase(mData)="array" then
			mJsonType = false
		end if
	End Property
	
 	Public Property Get JsonType()
			JsonType=mJsonType
	End Property
	
	Private Sub Class_Initialize()
		set mCollection=server.createobject("scripting.dictionary")
	End Sub

	Private Sub Class_Terminate()
		mCollection.removeAll()
		set mCollection=nothing
	End Sub
	
	public function addData(vars,values)
		if mCollection.exists(vars) then
			mCollection(vars)=mCollection(vars) & "," & values
		else
			mCollection.add vars,values
		end if
	end function
	
	Private function toJson(vars) 
		dim values
		if lcase(typename(vars))="aien_json" then
			set values=vars
		else
			values=vars
		end if
		dim aryStr
		dim vType:vType=lcase(typename(values))
		select case vType
			case "string"
				toJson="""" & jsEncode(values) & """"
			case "boolean"
				toJson="" & lcase(values) & ""
			case "date"
				toJson="""" & cstr(values) & """"
			case "empty"
				toJson="""Empty"""
			case "null"
				toJson="""Null"""
			case "nothing"
				toJson="""Nothing"""
			case "aien_json"
				toJson=getJson(values)
			case else
				if isnumeric(values) then
					toJson="" & cstr(values) & ""
				elseif isarray(values) then
					dim aStr:aStr="["
					for i=0 to ubound(values)
						aStr=aStr & toJson(values(i))
						if i<ubound(values) then aStr=aStr & ","
					next
					toJson="" & aStr & "]"
				else
					toJson="""" & cstr(values) & """"
				end if
		end select
	end function
	
	public function getJson(byval jsonObj)
		dim col:set col=jsonObj.Collection
		dim mJson
		if jsonObj.JsonType then mJson="{" else mJson="["
		for each vars in col
			if jsonObj.JsonType then 
				mJson=mJson & vars & ":" & toJson(col(vars))
			else
				mJson=mJson & toJson(col(vars))
			end if
			col.remove(vars)
			if col.count>0 then  mJson=mJson & ","
		next
		if jsonObj.JsonType then mJson=mJson & "}" else mJson=mJson & "]"
		getJson=mJson
	end function
	
	Private 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
end class
%>


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。