首页 文章

将groovy字符串转换为jenkins管道中的映射

提问于
浏览
0

我是Groovy和Jenkins管道的新手,我需要一个转换为 Map 的字符串来获取一些可行的数据,到目前为止我还没有找到解决方案 .

[fileListJs:file1.js,file2.js,file3.js, fileListHtml:file4.html,file5.html,file6.html, fileListCss:file6.css,file7.css,file8.html]

上面的字符串是某个jenkins选择参数在groovy变量中返回的内容 . 现在我需要这个是一个合适的 Map ,以便能够解析那里的数据 .

所以我尝试这种方法:Groovy String To map

以下代码如下:

def fileMap =
    // Take the String value between
    // the [ and ] brackets.
    fileList[1..-2]
        // Split on , to get a List.
        .split(', ')
        // Each list item is transformed
        // to a Map entry with key/value.
        .collectEntries { entry ->
            def pair = entry.split(':')
            [(pair.first()): pair.last()]
        }

其中fileList是返回先前给定字符串的变量 .

但这不起作用 .

任何帮助是极大的赞赏 .

谢谢

1 回答

  • 1

    我相信这就是你要找的东西 .

    String fileList = "[fileListJs:file1.js,file2.js,file3.js, fileListHtml:file4.html,file5.html,file6.html, fileListCss:file6.css,file7.css,file8.css]"
    
    fileList[1..-2]
           .split(/, /)
           *.tokenize(/:/)
           .collectEntries { [ it[0], it[1].tokenize(/,/) ] }
    

    应该给出一个结果Map as

    [
      fileListJs:  ['file1.js', 'file2.js', 'file3.js'], 
      fileListHtml:['file4.html', 'file5.html', 'file6.html'], 
      fileListCss: ['file6.css', 'file7.css', 'file8.css']
    ]
    

相关问题