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

如何在HTA文件中用JS将文件字符串转为对象(不使用JSON.parse)

不用JSON.parse解析JSON字符串为对象的方法(HTA环境)

既然你在HTA环境里遇到了JSON.parse的问题(大概率是因为HTA默认使用的老版本JScript引擎不支持原生JSON API),这里有几个可靠的替代方案,不需要依赖JSON.parse:

方案1:使用JScript的eval函数

JScript的eval可以直接执行JSON字符串对应的对象字面量代码,只需要给JSON字符串包裹一层括号,避免语法歧义:

// 你已经获取到的JSON字符串
var configs = '{"default":{"content":"main"}}';

var configObj;
try {
    // 包裹括号让引擎把大括号识别为对象表达式而非代码块
    configObj = eval('(' + configs + ')');
    
    // 测试访问属性
    alert(configObj.default.content); // 会弹出 "main"
} catch (error) {
    alert('解析失败: ' + error.message);
}

注意事项

  • eval会执行任何传入的代码,所以只在你完全信任这个JSON文件内容的场景下使用(比如自己维护的配置文件),避免注入风险。

方案2:混合VBScript解析(HTA专属)

HTA支持同时使用JScript和VBScript,你可以借助VBScript的Execute语句来解析JSON:

<!-- 先定义VBScript的解析函数 -->
<script language="VBScript">
Function ParseJSON(jsonString)
    Dim parsedObj
    ' 直接把JSON字符串当作对象赋值语句执行
    Execute "Set parsedObj = " & jsonString
    Set ParseJSON = parsedObj
End Function
</script>

<!-- 你的JScript代码 -->
<script language="JScript">
var fso = new ActiveXObject('Scripting.FileSystemObject');
var configsHandle = fso.OpenTextFile('configs.json', 1);
var configs = configsHandle.ReadAll();
configsHandle.Close();

// 调用VBScript的解析函数
var configObj = ParseJSON(configs);
alert(configObj.default.content);
</script>

这个方法在老版本JScript环境下兼容性很好,因为VBScript的对象解析逻辑对JSON格式的支持比较友好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:35:48