ASP JSON类源码
发布时间:2011-04-30 16:38:00
<%'============================================================' 文件名称 : /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_ClsPublic CollectionPublic CountPublic QuotedVars '是否为变量增加引号Public Kind ' 0 = object, 1 = arrayPrivate Sub Class_InitializeSet Collection = Server.CreateObject(GP_ScriptingDictionary)QuotedVars = TrueCount = 0End SubPrivate Sub Class_TerminateSet Collection = NothingEnd Sub' counterPrivate Property Get Counter Counter = CountCount = Count + 1End Property' 设置对象类型Public Property Let SetKind(ByVal fpKind)Select Case LCase(fpKind)Case "object":Kind=0Case "array":Kind=1End SelectEnd Property' - data maluplation' -- pairPublic Property Let Pair(p, v)If IsNull(p) Then p = CounterCollection(p) = vEnd PropertyPublic Property Set Pair(p, v)If IsNull(p) Then p = CounterIf TypeName(v) <> "Json_Cls" ThenErr.Raise &hD, "class: class", "class object: '" & TypeName(v) & "'"End IfSet Collection(p) = vEnd PropertyPublic Default Property Get Pair(p)If IsNull(p) Then p = Count - 1If IsObject(Collection(p)) ThenSet Pair = Collection(p)ElsePair = Collection(p)End IfEnd Property' -- pairPublic Sub CleanCollection.RemoveAllEnd SubPublic Sub Remove(vProp)Collection.Remove vPropEnd Sub' data maluplation' encodingPublic Function jsEncode(str)Dim i, j, aL1, aL2, c, paL1 = 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 = Truec = Mid(str, i, 1)For j = 0 To 7If c = Chr(aL1(j)) ThenjsEncode = jsEncode & "\" & Chr(aL2(j))p = FalseExit ForEnd IfNextIf p Then Dim aa = AscW(c)If a > 31 And a < 127 ThenjsEncode = jsEncode & cElseIf a > -1 Or a < 65535 ThenjsEncode = jsEncode & "\u" & String(4 - Len(Hex(a)), "0") & Hex(a)End If End IfNextEnd Function' convertingPublic Function toJSON(vPair)Select Case VarType(vPair)Case 1' NulltoJSON = "null"Case 7' Date' yaz saati problemi var' jsValue = "new Date(" & Round((vVal - #01/01/1970 02:00#) * 86400000) & ")"toJSON = """" & CStr(vPair) & """"Case 8' StringtoJSON = """" & jsEncode(vPair) & """"Case 9' ObjectDim bFI,i bFI = TrueIf vPair.Kind Then toJSON = toJSON & "[" Else toJSON = toJSON & "{"For Each i In vPair.CollectionIf bFI Then bFI = False Else toJSON = toJSON & ","If vPair.Kind Then toJSON = toJSON & toJSON(vPair(i))ElseIf QuotedVars ThentoJSON = toJSON & """" & i & """:" & toJSON(vPair(i))ElsetoJSON = toJSON & i & ":" & toJSON(vPair(i))End IfEnd IfNextIf vPair.Kind Then toJSON = toJSON & "]" Else toJSON = toJSON & "}"Case 11If vPair Then toJSON = "true" Else toJSON = "false"Case 12, 8192, 8204Dim sEBtoJSON = MultiArray(vPair, 1, "", sEB)Case ElsetoJSON = Replace(vPair, ",", ".")End selectEnd FunctionPublic Function MultiArray(aBD, iBC, sPS, ByRef sPT)' Array BoDy, Integer BaseCount, String PoSitionDim iDU, iDL, i' Integer DimensionUBound, Integer DimensionLBoundOn Error Resume NextiDL = LBound(aBD, iBC)iDU = UBound(aBD, iBC)Dim sPB1, sPB2' String PointBuffer1, String PointBuffer2If Err = 9 ThensPB1 = sPT & sPSFor i = 1 To Len(sPB1)If i <> 1 Then sPB2 = sPB2 & ","sPB2 = sPB2 & Mid(sPB1, i, 1)NextMultiArray = MultiArray & toJSON(Eval("aBD(" & sPB2 & ")"))ElsesPT = sPT & sPSMultiArray = MultiArray & "["For i = iDL To iDUMultiArray = MultiArray & MultiArray(aBD, iBC + 1, i, sPT)If i < iDU Then MultiArray = MultiArray & ","NextMultiArray = MultiArray & "]"sPT = Left(sPT, iBC - 2)End IfEnd FunctionPublic Property Get ToStringToString = toJSON(Me)End PropertyPublic Sub FlushIf TypeName(Response) <> "Empty" Then Response.Write(ToString)ElseIf WScript <> Empty Then WScript.Echo(ToString)End IfEnd SubPublic Function CloneSet Clone = ColClone(Me)End FunctionPrivate Function ColClone(core)Dim jsc, iSet jsc = New Json_Clsjsc.Kind = core.KindFor Each i In core.CollectionIf IsObject(core(i)) ThenSet jsc(i) = ColClone(core(i))Elsejsc(i) = core(i)End IfNextSet ColClone = jscEnd FunctionPublic 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 = jsaEnd FunctionEnd Class%>


猜你喜欢
- 本文实例讲述了Python解决鸡兔同笼问题的方法,分享给大家供大家参考。具体分析如下:问题描述一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子
- 大家好~ 老Amy来啦!已经n久没有给大家输出关于办公自动化的文章了…为什么呢?罗列原因:太忙!(被领导“压榨”)太忙!(没有额外的精力揣测
- php传值:在函数范围内,改变变量值得大小,都不会影响到函数外边的变量值。PHP传引用:在函数范围内,对值的任何改变,在函数外部也有所体现,
- 第一步——安装MySQL 到http://dev.mysql.com/downloads/ 下载这个服务器、MySQL GUI工具和MySQ
- 本例子实现从hbase获取数据,并发送kafka。使用#!/usr/bin/env python#coding=utf-8import sy
- 项目开始时是一个关键时刻,选择会对项目产生长期的影响。有很多关于如何开始使用Django框架的教程,但很少讨论如何专业地使用Django,或
- 循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。for循环for循环
- PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及可以添加附件发送,并不像PHP本身mail()函数需要
- 最近在研究pathon的命令行解析工具,argparse,它是Python标准库中推荐使用的编写命令行程序的工具。以前老是做UI程序,今天试
- 以上述图片举例,要求 相对 的顺时针夹角。注意:这里使用图像坐标系1 定义求顺时针角度的函数 import numpy as npdef
- 每个矿工将从先前创建的交易池中获取交易.要跟踪已挖掘的消息数量,我们必须创建一个全局变量 :last_transaction_index =
- PHP getNamespaces() 函数实例返回 XML 文档中使用的命名空间:<?php $xml=<<<XM
- instr函数为字符查找函数,其功能是查找一个字符串在另一个字符串中首次出现的位置。instr函数在Oracle/PLSQL中是返回要截取的
- 平时写得多的是python,最近看了一点go,今天碰到了一个问题,和大家分享一下package mainimport "fmt&q
- 在 Web 编辑器领域,CKEditor – 七年的专注,赢取的是王者风范。TinyMCE – 五年前的小家碧玉,如今已成长为大家闺秀。Go
- 换用非默认浏览器时需要输入密码或token查询方法:在XX:\AnacondaXX\Scripts下 运行jupyter-notebook.
- 代码如下:DECLARE @c INT DECLARE @c2 INT SELECT @c = COUNT(1) FROM dbo.Spli
- 前言Reids 在 Web 应用的开发中使用非常广泛,几乎所有的后端技术都会有涉及到 Redis 的使用。Redis 种除了常见的字符串 S
- 在pandas中的groupby和在sql语句中的groupby有异曲同工之妙,不过也难怪,毕竟关系数据库中的存放数据的结构也是一张大表罢了
- 目录一.models数据库映射二.serializers序列化三.url路由四.Views视图类一.models数据库映射from djan