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

如何不使用正则表达式,通过JSON对象统计JSON数组元素数量?

问题描述

我有如下简单JSON数组:

["123", "124", "321"]

想要不使用正则表达式,纯基于JSON对象统计元素数量,预期结果为3。

尝试了以下VBScript代码:

Dim jsonStr, jsonArray, elementCount
jsonStr = "[""123"", ""124"", ""321""]"
Set jsonScriptControl = CreateObject("ScriptControl")
jsonScriptControl.Language = "JScript"
Set jsonArray = jsonScriptControl.Eval("(" + jsonStr + ")")
elementCount = jsonArray.Length
MsgBox "Number of elements: " & elementCount

但运行时报错:

Microsoft VBScript runtime error: An ActiveX component cannot create an object: 'ScriptControl'.
解决方案

ScriptControl创建失败大多是因为64位系统默认禁用该组件,或者组件未正确注册。以下是两种无需依赖它的可行方案:

方案一:用.NET的JavaScriptSerializer解析

该方案依赖.NET Framework,适用于已安装.NET的Windows环境:

Dim jsonStr, serializer, jsonArray, elementCount
jsonStr = "[""123"", ""124"", ""321""]"

' 初始化.NET JSON序列化器
Set serializer = CreateObject("System.Web.Script.Serialization.JavaScriptSerializer")
' 将JSON字符串反序列化为ArrayList(对应JSON数组)
Set jsonArray = serializer.Deserialize(jsonStr, CreateObject("System.Collections.ArrayList").GetType())
' 获取元素数量
elementCount = jsonArray.Count

MsgBox "Number of elements: " & elementCount

方案二:通过临时JScript脚本解析

借助Windows Script Host执行JScript代码完成JSON解析,无需依赖特殊组件:

Dim jsonStr, jscriptCode, ws, fso, tempFile, elementCount
jsonStr = "[""123"", ""124"", ""321""]"

' 编写JScript逻辑:解析JSON并返回数组长度
jscriptCode = "function getLength(json) { return JSON.parse(json).length; }"
jscriptCode = jscriptCode & " WScript.Echo(getLength('" & Replace(jsonStr, "'", "\'") & "'));"

' 创建临时脚本文件
Set fso = CreateObject("Scripting.FileSystemObject")
tempFile = fso.GetSpecialFolder(2) & "\json_count.js"
Set file = fso.CreateTextFile(tempFile, True)
file.WriteLine(jscriptCode)
file.Close

' 执行脚本并获取结果
Set ws = CreateObject("WScript.Shell")
elementCount = ws.Run("cscript.exe //nologo """ & tempFile & """", 0, True)

' 清理临时文件
fso.DeleteFile(tempFile)

MsgBox "Number of elements: " & elementCount

可选:修复ScriptControl的使用

如果一定要用ScriptControl,可以尝试:

  1. 在32位命令提示符下运行脚本(64位系统中该组件仅注册在32位环境);
  2. 管理员权限下手动注册组件:
    regsvr32.exe %SystemRoot%\SysWOW64\mshtml.dll
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:27:43