почему --- (3 тире/дефис) в файле yaml?

Поэтому я просто начал использовать YAML файл вместо application.properties поскольку он более читабельен. Я вижу в файлах YAML начиная с ---. Я искал Google и нашел следующее объяснение.

YAML использует три тире ("---") для разделения директив из содержимого документа. Это также служит для оповещения о начале документа, если отсутствуют какие-либо директивы.

Кроме того, я попробовал образец без --- и понял, что это необязательно иметь их.

Я думаю, что у меня нет четкого понимания directive и document. Может ли кто-нибудь объяснить простой пример?

Ответ 1

Это не обязательно иметь их, если вы не начинаете YAML с директивы. Если это так, вы должны использовать их.

Давайте посмотрим на документацию

3.2.3.4. Директивы

Каждый документ может быть связан с набором директив. Директива имеет имя и необязательную последовательность параметров. Директивы являются инструкциями для процессора YAML, и, как и все другие подробности представления, не отражаются в дереве сериализации YAML или графе представления. Эта версия YAML определяет две директивы, "YAML" и "TAG". Все остальные директивы зарезервированы для будущих версий YAML.

Один пример этого также можно найти в документации по директиве YAML

%YAML 1.2 # Attempt parsing
           # with a warning
---
"foo"

Ответ 2

Как вы уже узнали, три черточки --- используются для обозначения начала документа, а именно:

  1. Чтобы сигнализировать о начале документа после директив, то есть строк %YAML или %TAG соответствии с текущей спецификацией. Например:

    %YAML 1.2
    %TAG !foo! !foo-types/
    ---
    myKey: myValue
    
  2. Чтобы сигнализировать о начале документа, когда у вас есть несколько документов yaml в одном потоке, например, файл yaml:

    doc 1
    ---
    doc 2
    

    Если в doc 2 есть несколько предшествующих директив, то мы должны использовать три точки ... чтобы указать конец doc 1 (и начало потенциальных директив, предшествующих doc 2) парсеру. Например:

    doc 1
    ...
    %TAG !bar! !bar-types/
    ---
    doc 2
    

Спецификация хороша для разработчиков паролей yaml. Тем не менее, я считаю, что эту статью легче читать с точки зрения пользователя.