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

如何在Groovy中解析.js配置文件,使用JsonSlurper解析失败该如何处理

你提供的内容是Node.js模块导出的配置对象,不属于标准JSON格式(存在单引号包裹字符串、对象属性尾逗号、前缀导出声明),所以直接用JsonSlurper解析会失败。下面是两种可行的Groovy解析方案:

方案1:字符串预处理后使用JsonSlurper解析

适合配置格式固定、没有额外JS特殊语法(如注释、变量引用)的场景,实现简单效率高:

import groovy.json.JsonSlurper

// 读取config.js全部内容
def jsContent = new File("config.js").text

// 字符串预处理
def jsonStr = jsContent
        // 去除前缀导出声明和末尾分号
        .replaceFirst(/^exports\.config = /, "")
        .replaceFirst(/;$/, "")
        // 单引号替换为标准JSON要求的双引号
        .replaceAll(/'/, '"')
        // 移除所有对象/数组的尾逗号
        .replaceAll(/,(\s*[}\]])/, '$1')

// 解析得到配置对象
def config = new JsonSlurper().parseText(jsonStr)

// 测试取值
println config.tests // 输出 ./test/lib/test*.js
println config.helpers.WebDriver.browser // 输出 chrome

方案2:使用Groovy内置JavaScript引擎直接执行解析

通用方案,不需要做复杂字符串预处理,兼容所有合法JS配置写法:

import javax.script.ScriptEngineManager

// 读取config.js全部内容
def jsContent = new File("config.js").text

// 初始化JS引擎执行代码
def engine = new ScriptEngineManager().getEngineByName("javascript")
engine.eval(jsContent)
// 直接获取导出的config对象
def config = engine.get("config")

// 测试取值
println config.plugins.wdio.services[0] // 输出 selenium-standalone
println config.testData // 输出 ./test/resources/testData/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:36:04