我想在 Groovy 中解析一个 .js 配置文件

Posted

技术标签:

【中文标题】我想在 Groovy 中解析一个 .js 配置文件【英文标题】:I want to parse a .js config file in Groovy 【发布时间】:2021-11-03 15:05:52 【问题描述】:

我正在从 config.js 文件中读取此配置并尝试解析。我试过 JsonSlurper 没有运气。谁能让我知道在 groovy 中解析这个字符串的可行解决方案

exports.config = 
  tests: './test/lib/test*.js',
  output: './output',
  helpers: 
    WebDriver: 
      url: 'https://google.com/',
      browser: 'chrome',
      host: 'testhost.com',
      port: 80,
    ,
  ,
  plugins: 
    wdio: 
      enabled: false,
      services: [ 'selenium-standalone' ],
    ,
  ,
  include: 
    I: './steps_file.js',
  ,
  mocha: ,
  name: 'testProject',
  modules: './main/lib/',
  pageobjects: './main/pageObjects/',
  pages: './main/pages/',
  testData: './test/resources/testData/',
;

【问题讨论】:

【参考方案1】:

除了开头的赋值和结尾的分号(和反引号?)之外,它似乎可以被视为大部分不符合要求的 json

如果这些被剥离,剥离左大括号之前和从字符串末尾向后到右大括号的任何内容,那么您可能会在 jsonslurper 中使用 LAX 解析器,它允许不带引号的键和单引号。

【讨论】:

您好斯蒂芬,感谢您的回答。我尝试了以下方法并收到错误:import groovy.json.JsonParserType;导入 groovy.json.JsonSlurper; def obj = 测试:'./test/lib/test*.js',输出:'./output' def slurper = new JsonSlurper().setType(JsonParserType.LAX) def config = slurper.parse(obj) ; println(config) Script1.groovy: 5: unexpected token: ./test/lib/test*.js @ line 5, column 21. @ManojRajan 请将代码添加到问题中【参考方案2】:

Stephen 和@cfrick,我使用以下方法来实现我的要求:

    使用 slurper 和 LAX 解析器来解析内容 读取配置文件并删除“exports.config =”。 导入LAX解析器并解析内容 新的 JsonSlurper().setType(RELAX).parseText() 然后使用 Map 使其成为 Hashmap 并使用 put 函数更新 key Map mappedData=(HashMap)slurpedData; mappedData.put("value" , value);

【讨论】:

以上是关于我想在 Groovy 中解析一个 .js 配置文件的主要内容,如果未能解决你的问题,请参考以下文章

Groovy 和 Jenkins - 将 curl 输出捕获到文件

Android Gradle 插件Gradle 构建机制 ② ( Groovy 语言 DSL 特性 | settings.gradle 配置文件解析 | 配置子模块工程目录 | 顶层配置 )

GROOVY - 解析CSV:忽略双引号内的逗号

如何动态创建石墨烯对象?例如,我想在运行时根据配置文件添加字段和解析器

在另一个 groovy 中包含一个 groovy 脚本

使用 groovy 配置的 spring 多部分解析器配置问题