找回密码
 会员注册
查看: 141|回复: 0

ASP解析JSON格式数据方法

[复制链接]

1389

主题

5

回帖

496万

积分

管理员

积分
4962992
发表于 2024-2-29 08:22:47 | 显示全部楼层 |阅读模式

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. %>
复制代码

方法一和方法二执行结果:

上面的方法应该是最简洁的方法了。

方法三:

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. %>
复制代码

方法三执行行结果:

文件下载:http://download.csdn.net/download/xieyunc/9842375


[code][/code]
来源:https://blog.csdn.net/xieyunc/article/details/72084849
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 02:01 , Processed in 0.512939 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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