如何用YamlBuilder将Map转换为指定格式的YAML文件?
解决Groovy YamlBuilder生成指定格式YAML的问题
你需要将包含逗号分隔字符串的Map转换为嵌套列表结构的YAML,直接传入原始Map无法得到目标格式,需要先预处理数据结构,再用YamlBuilder构建层级结构。
完整实现代码
def myMap = [1: "a, b, c ,d", 2: "y, d, x"] // 预处理Map:拆分逗号分隔字符串并去除多余空格 def processedMap = myMap.collectEntries { key, value -> [key, value.split(/\s*,\s*/).toList()] } def yamlFile = new YamlBuilder() yamlFile { // 构建顶层列表项 "-Content" { // 遍历处理后的Map,生成每个键对应的嵌套列表 processedMap.each { key, items -> "-$key" items } } } // 输出生成的YAML println yamlFile.toString()
代码说明
- 数据预处理:用
split(/\s*,\s*/)分割字符串,正则表达式会自动匹配逗号前后的任意空格,确保拆分后的元素没有多余空格;再通过collectEntries生成新的Map,每个值转为列表类型。 - YAML结构构建:
- 先创建顶层的
-Content列表项; - 遍历处理后的Map,为每个键生成
-数字格式的列表项,并将对应的列表传入,YamlBuilder会自动处理成嵌套的列表结构。
- 先创建顶层的
生成的结果
-Content: -1: -a -b -c -d -2: -y -d -x
内容的提问来源于stack exchange,提问作者Saar Gamzo
相关产品推荐
相关产品推荐

