ASPJSON类解析与使用示例

1 下载量 31 浏览量 更新于2024-08-31 收藏 33KB PDF 举报
"ASP JSON 类库的源码分享,用于在ASP中处理JSON数据的类文件,由Cloud.L修改,支持对象和数组两种类型,并提供数据操作方法。" 这篇内容介绍了一个基于ASP的JSON处理类——ASPJSON,它主要用于在Active Server Pages (ASP)环境中解析和生成JSON(JavaScript Object Notation)格式的数据。JSON是一种轻量级的数据交换格式,广泛应用于Web服务和客户端之间的数据传输,因为它的结构清晰、易于读写。 ASPJSON类的核心功能包括: 1. **初始化与终止**:类的初始化(Class_Initialize)方法创建了一个GP_ScriptingDictionary对象来存储键值对,QuotedVars属性默认设置为True,意味着变量会被添加引号以符合JSON规范。终止(Class_Terminate)方法负责释放内存,将Collection对象设为Nothing。 2. **计数器**:通过Counter属性,类可以跟踪添加到Collection中的元素数量,每次调用Counter时,计数值会递增1。 3. **对象类型设定**:Kind属性用于设定当前处理的JSON类型,可以是0表示对象(JSON object),或1表示数组(JSON array)。通过SetKind方法可以设置此属性。 4. **数据操作**: - **Pair**:Pair属性允许用户设置键值对,如果未指定键,则默认使用当前的Counter值作为键。Collection对象用于存储这些键值对。 5. **其他可能的方法和属性**:虽然只给出了部分源码,但通常此类还会包含其他方法,如序列化JSON对象到字符串(ToJson)、解析JSON字符串到对象(Parse)、以及获取或设置特定键的值(GetValue, SetValue)等。 使用ASPJSON类,开发者可以在ASP环境中方便地处理JSON数据,无论是解析来自服务器的响应,还是构建发送到服务器的请求。这对于实现AJAX(Asynchronous JavaScript and XML)风格的交互式Web应用非常有用,即使XML并非实际使用的数据格式,而是JSON。 由于没有给出完整的源码,我们无法看到所有可用的方法和属性,但以上信息已经揭示了这个类的基本工作原理。开发者可以根据需求结合提供的源码,扩展或定制功能,以适应更复杂的JSON处理任务。此外,作者Cloud.L的博客(Http://www.cnode.cn)可能会有更多关于这个类的使用和开发细节,对于想要深入理解和使用ASPJSON的人来说,这是一个值得探索的资源。
2015-04-24 上传
Asp 这个老古懂估计没几个人在用了。几年没写代码了,最近要弄个小东西,给手机端提供json数据,不想麻烦别人,自己又只会asp,没办法就自己动手了。网上找了好久都没有一个人能完整的把asp操作json说清楚。最后还是自己搞定的。整出来共享给大家。(ps,还有个原因csdn的分不够用啦,大家看着给点吧。写这个说明文档都用了我两小时。^_^) 以下是示例代码 '说明:json.asp中引用了json.js.asp '其他见文档 '手机很多时候不认gb2312,跳入json的坑就忘记gb2312吧,讨厌的是,如果代码报错,iis会输出gb2312,结果就是乱码,有点烦。 '自己想办法解决吧 response.Charset= "utf-8" dim strJsonData,ovbJson,j dim arrTemp,varname ,i set ovbJson=new vbJson 'asp recrodset和数组转json字符 arrTemp=array("a","{""oa"":""我是oa""}","c") strJsonData=ovbjson.toJson(empty,arrTemp,true) '转换为Json格式的字符串,有兴趣可以自己输出看看是什么 set j=json.parse(strJsonData) '序列化为json对象(或者是数组对象) response.Write(j.get(1)&"") '别用vb数组来存json对象,不然得每个元素去重新序列化,这里如果想j.get(1).oa就不行了。必须对j.get(1)单独序列才行 '----recrodset就不演示了,懒得连数据库 '---自定义操作方法的演示--- strJsonData="{a:1,b:[{c:'我是数组中的点c'}]}" set j=json.parsestr(strJsonData) response.Write(j.b.get(0).c&"") '添加节点的时候注意,如果值是null,会被忽然,这个节点会不存在的。在添加之前记得先检查值 set j=json.add(j,"new","我是新加的节点") response.Write(j.new&"") '下面这句注掉了,是因为这个操作是无效的因为j.b是数组,不能add 'set j=json.add(j.b,"new1","我是加不进的节点") set j.b=j.b.put(j.b.length,j.b.get(0)) response.Write(j.b.get(1).c&",我是新加的数组元素") '因为数组的get方法不允许被赋值,所以不能像下面这样写 'set j.b.get(0)=json.add(j.b.get(0),"new","我会报错") json.add j.b.get(0),"new","我是新加的new我不会报错" json.add j.b.get(0),"new1","我是通过变量取出来的哦" response.Write(j.b.get(0).new&"") varname="new1" response.Write(json.byname(j.b.get(0),varname)&"") for i=0 to j.b.length-1 varname="c" response.Write(json.byname(j.b.get(i),varname)&"我是循环出来的c,索引:"&i&" ") next '最后完整的输出给手机就这样: response.Write json.stringify(j)