查看: 2795|回复: 13

[文章教程] 推荐一个快速的ASP JSON解析器(JSON object class)

[复制链接]
xuanxiao 发表于 2019-6-10 21:59:48 | 显示全部楼层 |阅读模式
JSON数据文件demo.txt截图
1.jpg



  1. <%
  2. Option Explicit
  3. Response.LCID = 2052 ' 中国 LCID (使用你当地的LCID).
  4. ' 也可以在当前页面声明,或者在全站session声明LCID属性.
  5. %>
  6. <!--#include file="jsonObject.class.asp" -->
  7. <%
  8. '//json解析开始

  9. dim str_json
  10. dim jsonObj,jsonString,outputObj
  11. set jsonObj = new JSONobject  '//创建对象
  12. '//导入json字符串,结构如图
  13. jsonString =OpenFile("Json_String.txt")  
  14. '//解析开始
  15. jsonObj.parse(jsonString)
  16. '//打印序列化后的对象
  17. jsonObj.Write()         
  18. response.Write "<br>"
  19. '//打印值
  20. Response.Write "网站名称:"&jsonObj.value("SiteName")&"<br>"
  21. Response.Write "网站年龄:" & jsonObj("age") ' 短语法
  22. %>

复制代码

asp_json_read.rar (8.16 KB, 下载次数: 20, 售价: 10 个ASP币)
 楼主| xuanxiao 发表于 2019-6-22 19:02:55 | 显示全部楼层
下面是修改删除属性值方法:

  1. <%
  2. Option Explicit
  3. Response.LCID = 2052 ' 中国 LCID (使用你当地的LCID).
  4. ' 也可以在当前页面声明,或者在全站session声明LCID属性.
  5. %>
  6. <!--#include file="jsonObject.class.asp" -->
  7. <%
  8. dim str_json
  9. dim jsonObj,jsonString,outputObj
  10. set jsonObj = new JSONobject  '//创建对象
  11. '//导入json字符串,结构如图
  12. jsonString =OpenFile("Json_String.txt")  
  13. '//解析开始
  14. jsonObj.parse(jsonString)
  15. '//打印值

  16. Response.Write "网站名称:"&jsonObj.value("SiteName")&"<br>"
  17. Response.Write "网站年龄:" & jsonObj("age") ' 短语法

  18. '//修改sitename值
  19. jsonObj.change "SiteName", "微信与QQ"
  20. jsonObj.change "age", 10
  21. jsonObj.change "nonExisting", "创建成功" '//创建不存在的属性
  22. '//下面开始修改对应值
  23. response.write "<p>下面是修改后的值:<br>"
  24. response.write "网站名称: " & jsonObj.value("SiteName") & "<br>"
  25. Response.Write "网站年龄:" & jsonObj("age") &"<br>" ' 短语法
  26. response.write "不存在的属性: " & jsonObj.value("nonExisting") & "<br>"
  27. response.Write  "</p>"

  28. '//下面开始删除操作
  29. jsonObj.remove "nonExisting" '//删除刚刚新建的属性
  30. jsonObj.remove "aNonExistantPropertyName" ' 即便是不存在的属性,也会静默删除掉

  31. response.write "<p>下面是删除后的值:<br>"
  32. response.write "网站名称: " & jsonObj.value("SiteName") & "<br>"
  33. Response.Write "网站年龄:" & jsonObj("age") &"<br>" ' 短语法
  34. response.write "不存在的属性: " & jsonObj.value("nonExisting") & "<br>"
  35. response.Write  "</p>"
  36.                
  37. set jsonObj = nothing
  38. %>

复制代码

1.jpg
json_update.asp (1.38 KB, 下载次数: 1, 售价: 1 个ASP币)
ttasp 发表于 2019-6-24 12:38:29 | 显示全部楼层
新增属性的方法:
  1. <%
  2. Option Explicit
  3. Response.LCID = 2052 ' 中国 LCID (使用你当地的LCID).
  4. ' 也可以在当前页面声明,或者在全站session声明LCID属性.
  5. %>
  6. <!--#include file="jsonObject.class.asp" -->
  7. <%
  8. '//JSON新增属性
  9. dim str_json
  10. dim jsonObj,jsonString,outputObj
  11. dim item

  12. set jsonObj = new JSONobject  '//创建对象
  13. '//导入json字符串,结构如图
  14. jsonString =OpenFile("Json_String.txt")  
  15. '//解析开始
  16. jsonObj.parse(jsonString)
  17. '//打印序列化后的对象
  18. response.write "<h2>新增属性前</h2>"
  19. jsonObj.Write()        
  20. '//打印值
  21. Response.Write "网站名称:"&jsonObj.value("SiteName")&"<br>"
  22. Response.Write "网站年龄:" & jsonObj("age") ' 短语法

  23. response.write "<h2>新增属性后</h2>"

  24. ' 下面开始新增属性
  25. jsonObj.Add "OS", "Windows"
  26. jsonObj.Add "Server Ip", "115.25.258.12"
  27. jsonObj.Add "SEO", Array(1350, 127, "没数据")

  28. '//打印序列化后的对象
  29. response.Write "<br>"
  30. jsonObj.Write()        
  31. response.write "<h2>打印新增属性</h2>"
  32. '//打印值

  33. Response.Write "服务器系统:"&jsonObj.value("OS")&"<br>"
  34. Response.Write "SEO数据:" &"<br>"
  35. '//打印数组节点
  36. for each item in jsonObj("SEO").items
  37.         if isObject(item) and typeName(item) = "JSONobject" then
  38.                 item.write()
  39.         else
  40.                 response.write item
  41.         end if
  42.        
  43.         response.write "<br>*************************************************<br>"
  44. next
  45. set jsonObj = nothing

  46. %>
复制代码

json_add.asp (1.27 KB, 下载次数: 2, 售价: 1 个ASP币)

1.png
ttasp 发表于 2019-6-24 13:12:51 | 显示全部楼层
记载记录集方法:
  1. <%
  2. Option Explicit
  3. Response.LCID = 2052 ' 中国 LCID (使用你当地的LCID).
  4. ' 也可以在当前页面声明,或者在全站session声明LCID属性.
  5. %>
  6. <!--#include file="jsonObject.class.asp" -->
  7. <%
  8. dim str_json
  9. dim jsonObj,jsonString,outputObj
  10. set jsonObj = new JSONobject  '//创建对象

  11. ' 从ADODB.Recordset加载记录集
  12. dim cn, rs
  13. set cn = CreateObject("ADODB.Connection")
  14. cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("ttasp_json.mdb")

  15. set rs = cn.execute("SELECT * FROM admin")

  16. jsonObj.LoadRecordset rs

  17. rs.Close
  18. cn.Close
  19. set rs = Nothing
  20. set cn = Nothing

  21. response.Write "<h2>打印JSON字符串</h2>"
  22. jsonObj.defaultPropertyName = "AdminList"
  23. jsonObj.Write()                 

  24. set jsonObj=nothing

  25. %>
复制代码


1.jpg
JSON_LOAD_RECORDSET.rar (12.99 KB, 下载次数: 0, 售价: 10 个ASP币)
大熊 发表于 2019-6-28 09:33:46 | 显示全部楼层
牛逼了,学习学习
 楼主| xuanxiao 发表于 2021-5-31 23:30:05 | 显示全部楼层

  1. {
  2.         "success": true,
  3.         "msg": "ok",
  4.         "code": 0,
  5.         "t": {
  6.                 "turnNum": "31/05/2021-1236",
  7.                 "openTime": "2021-05-31 22:27:00",
  8.                 "serverTime": "2021-05-31 22:26:56",
  9.                 "name": "Siêu T&#7889;c 45 Giay",
  10.                 "code": "st45g",
  11.                 "issueList": [{
  12.                         "turnNum": "31/05/2021-1235",
  13.                         "openNum": "9,6,6,6,5,5",
  14.                         "openTime": "2021-05-31 22:26:15",
  15.                         "detail": "["966655","32323","65974","94404,01068","26581,99064,01051,50667,07036,25076,97023","9447","8446,2628,1059","381","67"]"
  16.                 }, {
  17.                         "turnNum": "31/05/2021-1234",
  18.                         "openNum": "8,9,5,9,3,6",
  19.                         "openTime": "2021-05-31 22:25:30",
  20.                         "detail": "["895936","51965","55936","58515,18551","52382,24847,76418,09611,28779,36644,67726","7194","2465,6783,5233","092","50"]"
  21.                 }, {
  22.                         "turnNum": "31/05/2021-1233",
  23.                         "openNum": "0,4,0,2,7,1",
  24.                         "openTime": "2021-05-31 22:24:45",
  25.                         "detail": "["040271","64139","11179","94176,70599","84605,44464,43328,68026,99781,49458,08283","8078","4442,1375,9591","284","09"]"
  26.                 }, {
  27.                         "turnNum": "31/05/2021-1232",
  28.                         "openNum": "2,5,0,6,3,9",
  29.                         "openTime": "2021-05-31 22:24:00",
  30.                         "detail": "["250639","85851","90505","96689,53958","35820,72607,02020,11928,42420,22039,07919","2699","3792,1011,3974","134","16"]"
  31.                 }, {
  32.                         "turnNum": "31/05/2021-1231",
  33.                         "openNum": "0,3,1,7,0,5",
  34.                         "openTime": "2021-05-31 22:23:15",
  35.                         "detail": "["031705","25046","97310","98690,88626","93352,38055,10531,48162,71396,00696,85605","7051","1485,1942,7796","805","21"]"
  36.                 }]
  37.         }
  38. }
复制代码


解析JSON样例


  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <%
  3. Option Explicit
  4. session.codepage=65001
  5. response.charset="utf-8"

  6. Response.LCID = 2052 ' 中国 LCID (使用你当地的LCID).
  7. ' 也可以在当前页面声明,或者在全站session声明LCID属性.
  8. %>
  9. <!--#include file="jsonObject.class.asp" -->
  10. <%
  11. '//json解析开始
  12. dim url,item

  13. dim str_json
  14. dim jsonObj,jsonString,outputObj
  15. dim arr

  16. set jsonObj = new JSONobject  '//创建对象

  17. jsonString ="样例代码"
  18. '//解析开始
  19. jsonObj.parse(jsonString)

  20. 'jsonObj.Write()

  21.    Set arr = jsonObj("t")("issueList")
  22.    For each item in arr.items
  23.    
  24.       '//print result

  25.                          
  26.         response.Write "turnNum:"&item("turnNum")&",&nbsp;"
  27.         response.Write "openNum:"&item("openNum")&",&nbsp;"
  28.         response.Write "openTime:"&item("openTime")&"<br>"
  29.   
  30.        
  31.    Next

  32. Set arr=nothing

  33. set jsonObj=nothing



  34. %>


复制代码



QQ截图20210531232942.png

  1. Set objJSON= new JSONobject  '//创建对象
  2. objJSON.parse(strJson)          
  3.                  Set arrJSON= objJSON("TTASP")
  4.                                  for i = 0 to arrJSON.length - 1
  5.                                                          
  6.                                                                 Set itemJson = arrJSON(i)
  7.                                                                 response.write itemJson("耗材名称")       
  8.                                                             response.write "<br>"
  9.                                                                 Set itemJson =Nothing                                                       
  10.                                                
  11.                                                 next                                                '                  
  12.                 '
  13.                 Set arrJSON=nothing
  14. Set objJson=nothing
复制代码
热米粉 发表于 2022-2-26 10:25:53 | 显示全部楼层
有没有可能,在 global 里面注册一个 IE 11 的 JSON 对象,然后全局调用 JSON.parse 和 JSON.stringify
 楼主| xuanxiao 发表于 2022-2-26 22:10:41 | 显示全部楼层
热米粉 发表于 2022-2-26 10:25
有没有可能,在 global 里面注册一个 IE 11 的 JSON 对象,然后全局调用 JSON.parse 和 JSON.stringify

有简单解析版本,最快速的Json字符串解析方法(超简单)
http://bbs.ttasp.com/thread-8820-1-1.html
(出处: 天天ASP家园)
 楼主| xuanxiao 发表于 2022-3-6 17:51:48 | 显示全部楼层
一个JSON字符串解析范例(包含多个数组嵌套) QQ截图20220306175057.png

数组JSON.rar (9.92 KB, 下载次数: 28, 售价: 10 个ASP币)

解析结果:
QQ截图20220306175322.png
 楼主| xuanxiao 发表于 2022-3-30 18:53:45 | 显示全部楼层
创建JSON数组节点:


  1. set MyJson = New JSONobject
  2.   call Arr_Add()
  3. MyJson.Write()        
  4. set MyJson =nothing


  5. Sub Arr_Add()

  6.                 set JSONarr = New JSONarray
  7.                   '//创建数组
  8.                 year_start=Year(now())
  9.                 For i=year_start to year_start+19
  10.                                                         Fname=Fdir&"/"&i&"/"&Birth_Rate&".txt"       
  11.                                                         myarr=ReadFromTextFile(Fname,"Utf-8")  
  12.                                                         myarr=split(myarr,",")       
  13.                                                        
  14.                
  15.                                 set JSON = New JSONobject
  16.                                 JSON.Add "birth", myarr(0)
  17.                                 JSON.Add "total", myarr(1)         
  18.                                 JSONarr.Push JSON          
  19.                                 set JSON =nothing
  20.                  Next'

  21.     MyJson.Add "20years", JSONarr                    
  22.     Set JSONarr=nothing

  23.        
  24.        
  25. End Sub
复制代码


微信截图_20220330185318.png
无忧全自动操作 发表于 2023-6-16 21:33:46 | 显示全部楼层
rcdmk/aspJSON:一个快速的经典 ASP JSON 解析器和编码器,用于简单的 JSON 操作以与新的 JavaScript MV* 库和框架一起工作。
https://github.com/rcdmk/aspJSON

数据交互还是习惯用json,就满网络找json的方法。
找到个类,很好用,分享给大家。
asp中使用json,这个jsonObject.class.asp真心不错
支持rs直接转json,单行、多行都可以

JSON.Add "prop1", "someString"
JSON.Change "prop1", "someOtherString"
Response.Write JSON.Value("prop1")

这样操作感觉代码比较繁琐,最方便是直接:
JSON("abc")=333 '没有该项就自动添加
JSON.remove("abc")
 楼主| xuanxiao 发表于 2023-6-17 13:33:18 | 显示全部楼层
无忧全自动操作 发表于 2023-6-16 21:33
rcdmk/aspJSON:一个快速的经典 ASP JSON 解析器和编码器,用于简单的 JSON 操作以与新的 JavaScript MV*  ...

是的,感谢分享
熊瑞 发表于 2023-6-20 17:25:20 | 显示全部楼层
不错 !asp还在战斗
 楼主| xuanxiao 发表于 2023-6-20 22:46:11 | 显示全部楼层
熊瑞 发表于 2023-6-20 17:25
不错 !asp还在战斗

必须的,欢迎加群。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

在线客服

售前咨询
售后咨询
服务热线
023-58418553
微信公众号