Возможно ли иметь список в корневом разделе файла YAML? Пока я не видел файлов, которые следовали бы такой структуре, и я спрашивал себя, нарушает ли это синтаксис.

Вот пример:

- 'entry A'
- 'entry B'
- 'entry C'

Что я видел до сих пор:

list:
  - 'entry A'
  - 'entry B'
  - 'entry C'

Другими словами, является ли раздел list: устаревшим?

8
Jan Schultke 16 Апр 2016 в 13:53

2 ответа

Лучший ответ

Это нормально.
Вот пример java, который использует snakeYaml:

org.yaml.snakeyaml.Yaml yaml = new org.yaml.snakeyaml.Yaml();
Object o = yaml.load("- 'entry A'\n- 'entry B'\n- 'entry C'");
System.out.println(o.getClass().getName());

Вывод кода:

java.util.ArrayList

Но в реальном сценарии мы храним содержимое объекта в файле yaml. Когда мы это делаем, если тип одного поля - Список, мы фактически сохраняем, как вы всегда видите:

'field name':
- item1
- item2
5
sel-fish 16 Апр 2016 в 16:18

Нет, скаляр list не устарел, он определяет совершенно другую структуру.

Файлы YAML состоят из сопоставлений , последовательностей и скаляров .

  • Сопоставление состоит из пар "ключ-значение". Ключ может быть скаляром или списком; значение может быть отображением, последовательностью или скаляром.
  • Список состоит из элементов, и каждый элемент может быть отображением, последовательностью или скаляром.
  • Скаляр в принципе является строкой, но некоторые строки могут интерпретироваться особым образом (только числа -> целые числа, «Ложь» -> логическое значение и т. Д.)

На верхнем уровне у вас может быть (единственный) скаляр (по общему признанию, это не очень гибкий):

Hello world

Или отображение:

abc: 
  - 1
  - 2

Или список:

- 1
- 2  

Ваш первый пример имеет на верхнем уровне последовательность, состоящую из скаляров, ваш второй пример имеет на верхнем уровне отображение с одной парой ключ-значение. Ключ - это скаляр list, а значение - последовательность скаляров.

4
Anthon 18 Апр 2016 в 15:23