И YAML многострочных массивов


на в YAML, вы можете легко создать многострочные строки. Тем не менее, я хотел бы иметь возможность создавать многострочный массив (в основном для удобства чтения в файлах конфигурации) с помощью | символ.

В ФОРМАТЕ YAML массив можно представить как: ['key1', 'key2', 'key3'].

В ФОРМАТЕ YAML последовательность использует тире, за которым следует пробел, а затем строка:

- String1
- String2
- String3

это будет оцениваться: ['string1', 'string2', 'string3'].

В ФОРМАТЕ YAML картография - это массив пар ключей и значений, которые мы видим все время в YAML:

Key1: string1
Key2: string2
Key3: string3

это все хорошо, но я не могу для жизни меня видеть, как это сделать многострочный массив. Что-то вроде этого:

|
['string1', 'string2', 'string3']
['string4', 'string5', 'string6']

если не создавать несколько сопоставлений массивов в YAML и объединять их на моем языке программирования по выбору, есть ли способ достичь многострочных массивов, возможно, с { } как Python имеет, но в И YAML?

3 54

3 ответа:

В ФОРМАТЕ YAML последовательностьи an массив. Так что это правильный способ выразить это:

key:
  - string1
  - string2      
  - string3
  - string4
  - string5
  - string6

это идентично по смыслу:

key: ['string1', 'string2', 'string3', 'string4', 'string5', 'string6']

также законно разбивать однострочный массив на несколько строк:

key: ['string1', 'string2', 'string3', 
  'string4', 'string5', 
  'string6']

и даже нескольких строк в одну строку массива:

key: ['string1', 'long
  string', 'string3', 'string4', 'string5', 'string6']

следующее будет работать:

myarray: [
  String1, String2, String3,
  String4, String5, String5, String7
]

Я тестировал его с помощью реализации snakeyaml, хотя я не уверен в других реализациях.

ты пробовал?

-
  name: Jack
  age: 32
-
  name: Claudia
  age: 25

Я получаю это: [{"name"=>"Jack", "age"=>32}, {"name"=>"Claudia", "age"=>25}] (Я использую YAML класс Рубин).