我是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是返回前一个给定字符串的变量。
但这不起作用。
非常感谢任何帮助。
由于
答案 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']
]