Конвертировать карту в файл 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"
Другие вопросы по тегам