Конвертировать карту в файл yaml
Я пытаюсь создать файл yaml из карты с помощью yamlBuilder, но он не в том контексте, который мне нужен.
Например: Map mymap = [1: "a, b, c, d", 2: "y, d, x"]
yamlfile, который я хочу выглядеть так:
-Content:
-1:
-a
-b
-c
-d
-2:
-y
-d
-x
Каким должен быть синтаксис создания файла yaml? Я пробовал:
def yamlFile = new YamlBuilder()
yamlFile{
myMap
}
но это не тот дизайн, который мне нужен.
Спасибо
1 ответ
Итак, с картой, которую вы указали в вопросе, вы можете сделать:
import groovy.yaml.YamlBuilder
Map mymap = [1: "a, b, c ,d", 2: "y, d, x"]
def config = new YamlBuilder()
config {
"Content" mymap
}
println config.toString()
Какие печатает
---
Content:
"1": "a, b, c ,d"
"2": "y, d, x"
Как видите, ваша карта ввода имеет только строковые значения, а не списки...
Если вы хотели указать свою входную карту как:
Map mymap = [1: ["a", "b", "c", "d"], 2: ["y", "d", "x"]]
Затем приведенный выше код распечатывает
Это то, что вы говорите, что хотите...
Если исходная карта была правильной, и вам отправляются строки, разделенные запятыми, для представления списков, вам нужно будет самостоятельно превратить их в списки.
Map mymap = [1: "a, b, c ,d", 2: "y, d, x"]
mymap = mymap.collectEntries { k, v ->
[k, v.split(",")*.trim()]
}
def config = new YamlBuilder()
config {
"Content" mymap
}
println config.toString()
Что снова дает вам
---
Content:
"1":
- "a"
- "b"
- "c"
- "d"
"2":
- "y"
- "d"
- "x"