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

时间:2018-04-11 23:37:37

标签: jenkins groovy jenkins-pipeline

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

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

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

所以我尝试这种方法: 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 个答案:

答案 0 :(得分: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(/,/) ] }

应该将结果映射为

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