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

Chilkat 11.3 ActiveX中JsonArray.ObjectAt方法异常行为求助

Chilkat ActiveX 11.3中JsonArray.ObjectAt(-1)行为变更问题

不少使用Chilkat ActiveX的VB6开发者都遇到过这个版本升级后的兼容性问题——Chilkat在11.2到11.3的版本迭代中,调整了JsonArray.ObjectAt方法对负索引的处理逻辑:

  • 11.0及更早版本:传入负索引(比如-1)时,方法直接返回Nothing
  • 11.3版本:负索引被解析为从数组末尾反向计数,-1会返回数组最后一个元素,-2返回倒数第二个,以此类推

这种变更直接破坏了你原本依赖“返回Nothing判断索引非法”的逻辑,导致代码误判索引有效性。

针对这个问题,推荐的修复方案:

  • 先对传入的索引做合法性校验,确保索引范围在0到jsonArray.Size - 1之间,杜绝负索引传入ObjectAt方法
  • 如果业务逻辑需要获取最后一个元素,直接用jsonArray.ObjectAt(jsonArray.Size - 1)来替代-1的写法
  • 保留原有的空值判断,但结合索引校验,示例代码:
If lindex >= 0 And lindex < jsonArray.Size Then
    Set jsonObject = jsonArray.ObjectAt(lindex)
    If Not jsonObject Is Nothing Then
        ' 你的业务处理逻辑
    End If
Else
    ' 索引非法的处理逻辑(对应旧版本中返回Nothing的场景)
End If

这个行为变更是Chilkat为了对齐主流数组反向索引的设计习惯做出的调整,相关细节在官方版本更新日志中有说明,但确实给依赖旧逻辑的项目带来了兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 12:27:30