You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

aspJSON加载JSON报Clng溢出及多条记录遍历错误求助

aspJSON 1.19 版本溢出及遍历报错解决方案

1. 修复Overflow: 'Clng'报错

报错根因为1.19版本的aspJSON使用Clng函数处理JSON中的数值,VBA中Clng仅支持-2147483648~2147483647范围的数值,超出范围(比如大ID、时间戳)就会触发溢出。
修复步骤:

  • 打开aspJSON1.19.asp文件,定位到第265行
  • 将行内的Clng函数替换为CDbl,CDbl支持更大的数值范围,可兼容绝大多数JSON数值场景。

2. 修复遍历第二条数据时报Object required报错

报错根因为遍历数组的方式错误,若使用For Each遍历aspJSON的数组对象,会同时遍历内部私有属性,导致第二次循环时取到的索引无效,无法获取到对应元素。
正确的数组遍历写法如下:

Set oJSON = New aspJSON
' 传入你已校验有效的JSON字符串
oJSON.loadJSON(jsonStr)

' 提前缓存events数组对象,避免重复查找
Set eventsArr = oJSON.data("events")
' 数组索引从0开始,遍历范围为0到数组长度减1
For i = 0 To eventsArr.Count - 1
    Set currentEvent = eventsArr.item(i)
    ' 获取当前记录id
    eventId = currentEvent.data("id")
    ' 获取当前记录全量JSON字符串
    fullEventData = currentEvent.Serialize()
    
    ' 此处写入你的业务处理逻辑
    ' Response.Write "ID:" & eventId & ", 数据:" & Server.HTMLEncode(fullEventData) & "<br>"
Next

' 销毁对象释放内存,适配数千条数据的内存占用需求
Set currentEvent = Nothing
Set eventsArr = Nothing
Set oJSON = Nothing

3. 数千条数据场景优化建议

  • 若JSON中存在超大数值(超过16位),可在生成JSON的上游将数值类型的id转为字符串类型,彻底避免数值解析溢出问题
  • 遍历过程中不要重复调用oJSON.data("events"),提前将数组赋值给局部变量可提升遍历性能
  • 处理完单条数据后及时释放临时对象的引用,避免内存占用过高

内容的提问来源于stack exchange,提问作者Dennis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 17:36:03