依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 43|回复: 0

ASP解析JSON格式数据方法

[复制链接] 主动推送

6268

主题

6320

帖子

6464

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6464
发表于 2024-4-21 16:32:49 | 显示全部楼层 |阅读模式
VBScript 是 ASP 服务端程序的常用语言,VBScript 解析 JSON是个问题.,自己写解析程序不太容易,碰到这问题, 第一个想到的就是 JScript 了。
注意,以下文件均以UTF-8的编码保存!
方法一(这是直接在 asp 里混用脚本):
  1. <script language="jscript" runat="server">  
  2.     Array.prototype.get = function(x) { return this[x]; };  
  3.     function parseJSON(strJSON) { return eval("(" + strJSON + ")"); }  
  4. </script>  
  5. <%  
  6.     Dim json, obj  
  7.     json = "{a:""aaa"", b:{ name:""bb"", value:""text"" }, c:[""item0"", ""item1"", ""item2""]}"  
  8.     Set obj = parseJSON(json)  

  9.     Response.Write "JSON原文为:<br>"  
  10.     Response.Write json
  11.     Response.Write "<hr>"

  12.     Response.Write "a=" & obj.a & "<br />"  
  13.     Response.Write "b=" & obj.b.name & "<br />"  
  14.     Response.Write "c.length=" & obj.c.length & "<br />"  
  15.     Response.Write "c.get(0)=" & obj.c.get(0) & "<br />"  

  16.     Set obj = Nothing  
  17. %>  
复制代码
还有一个方法就是 使用 MS 的 脚本控件,也一样是使用了 JScript
方法二:

解析文件:paseJSON.asp
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <%Session.CodePage="65001"%>
  3. <%Response.CodePage="65001"%>
  4. <%Response.Charset="UTF-8" %>
  5. <%
  6.     Dim scriptCtrl  
  7.     Function parseJSON(str)  
  8.         If Not IsObject(scriptCtrl) Then  
  9.             Set scriptCtrl = Server.CreateObject("MSScriptControl.ScriptControl")  
  10.             scriptCtrl.Language = "JScript"  
  11.             scriptCtrl.AddCode "Array.prototype.get = function(x) { return this[x]; }; var result = null;"  
  12.         End If  
  13.         scriptCtrl.ExecuteStatement "result = " & str & ";"  
  14.         Set parseJSON = scriptCtrl.CodeObject.result  
  15.     End Function  
  16. %>
复制代码
测试文件:c.asp
  1. <!--#include file="jsonParse.asp"-->
  2. <%Session.CodePage="65001"%>
  3. <%Response.CodePage="65001"%>
  4. <%Response.Charset="UTF-8" %>
  5. <%
  6.     Dim json  
  7.     json = "{a:""aaa"", b:{ name:""bb"", value:""text"" }, c:[""item0"", ""item1"", ""item2""]}"  

  8.     Set obj = parseJSON(json)  

  9.     Response.Write "JSON原文为:<br>"  
  10.     Response.Write json
  11.     Response.Write "<hr>"

  12.     Response.Write "a=" & obj.a & "<br />"  
  13.     Response.Write "b=" & obj.b.name & "<br />"  
  14.     Response.Write "c.length=" & obj.c.length & "<br />"  
  15.     Response.Write "c.get(0)=" & obj.c.get(0) & "<br />"  


  16.     Set obj = Nothing  
  17. %>
复制代码
方法一和方法二执行结果:

ASP解析JSON格式数据方法

ASP解析JSON格式数据方法
上面的方法应该是最简洁的方法了。
方法三:
JSON解析文件----jsonParse.asp:
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <%Session.CodePage="65001"%>
  3. <%Response.CodePage="65001"%>
  4. <%Response.Charset="UTF-8" %>
  5. <%
  6. 'Option Explicit
  7. Dim sc4Json
  8. Sub InitScriptControl
  9.    Set sc4Json = Server.CreateObject("MSScriptControl.ScriptControl")
  10.    sc4Json.Language = "JavaScript"
  11.    sc4Json.AddCode "var itemTemp=null;function getJSArray(arr, index){itemTemp=arr[index];}"
  12. End Sub

  13. Function getJSONObject(strJSON)
  14.    sc4Json.AddCode "var jsonObject = " & strJSON
  15.    Set getJSONObject = sc4Json.CodeObject.jsonObject
  16. End Function

  17. Sub getJSArrayItem(objDest,objJSArray,index)
  18.    On Error Resume Next
  19.    sc4Json.Run "getJSArray",objJSArray, index
  20.    Set objDest = sc4Json.CodeObject.itemTemp
  21.    If Err.number=0 Then Exit Sub
  22.    objDest = sc4Json.CodeObject.itemTemp
  23. End Sub
  24. %>
复制代码
测试文件----Test.asp
  1. <!--#include file="jsonParse.asp"-->
  2. <%Session.CodePage="65001"%>
  3. <%Response.CodePage="65001"%>
  4. <%Response.Charset="UTF-8" %>
  5. <%
  6. Dim strTest
  7. strTest = "{name:""张三丰"", age:24, email:[""zsf@163.com"",""zsf@gmail.com""], family:{parents:[""父亲"",""母亲""],toString:function(){return ""家庭成员"";}}}"
  8. Response.Write "JSON原文:<br>"
  9. Response.Write ( strTest )

  10. Dim objTest
  11. InitScriptControl
  12. Set objTest = getJSONObject( strTest )
  13. %>
  14. <hr>
  15. 姓名:<br>
  16. <%=objTest.name%><br>
  17. <hr>
  18. 邮件地址(方法一):<br>
  19. <%
  20. For i=0 To objTest.email.length
  21.         Response.Write ( sc4Json.Eval("jsonObject.email["&i&"]") & "<br>")
  22. Next
  23. %>
  24. 邮件地址(方法二):<br>
  25. <%
  26. Dim email
  27. For i=0 To objTest.email.length
  28.         getJSArrayItem email,objTest.email,i
  29.         Response.Write email & "<br>"
  30. Next
  31. %>
  32. <hr>
  33. 家庭信息:<br>
  34. <%
  35. Dim ai
  36. For i=0 To objTest.family.parents.length
  37.         getJSArrayItem ai, objTest.family.parents, i
  38.         Response.Write ai & "<br>"
  39. Next
  40. %>
  41. toString()函数:<br>
  42. <%=objTest.family.toString()%>
  43. <br>
  44. toString属性:<br>
  45. <%=objTest.family.toString%>
  46. <%
  47. Set objTest=nothing
  48. %>
复制代码
方法三执行行结果:

ASP解析JSON格式数据方法

ASP解析JSON格式数据方法


相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员5折;永久VIP免费
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|依星源码资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2024-5-6 16:44

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表