我对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字符串
它执行以下代码:
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是返回前一个给定字符串的变量。
但这不管用。
任何帮助都是非常感谢的。
谢谢
发布于 2018-04-11 17:09:28
我相信这就是你要找的。
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']
]
https://stackoverflow.com/questions/49785879
复制相似问题