Как избежать двоеточий и других специальных символов в строке YAML?

У меня есть следующий фрагмент YAML:

description: |
  "API for bean consuming applications.
  Examples: painted pony, lima bean"

Редактор Swagger интерпретирует двоеточие (:) как специальный символ, несмотря на кавычки.

В соответствии с принятым ответом на этот вопрос двоеточие не следует рассматривать как специальный символ.

Является ли это ошибкой Swagger или является escape-последовательностью, необходимой для использования двоеточия в цитированных текстовых литералах?

Я попытался найти это, используя спецификацию ) в YAML?

Использует ли труба (|) или больше (>) конструкция только для обработки разрыва строки или для обработки специальных символов?

Ответ 1

Я бы посчитал это ошибкой в чванстве, но я видел проблемы в других редакторах, например при выделении YAML.

Когда строковый скаляр окружен одинарными кавычками '....', единственное, что можно сделать в этой строке, это вставить двойную одинарную кавычку, чтобы указать одинарную кавычку:

'It' a good question'

Когда двойные кавычки, "....", обойдите скалярную строку, для которой вы используете обратную косую черту (\), и вам нужно экранировать хотя бы обратную косую черту и двойные кавычки. Кроме того, вы можете экранировать другие специальные символы, такие как перевод строки (\n) и экранировать конец строки, поставив перед ним обратную косую черту.

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

Для сложенного стиля (>) экранирующее поведение аналогично буквальным скалярам.

Все строковые скаляры, кроме простых скаляров (без кавычек или >/|), могут содержать :, за которым следует пробел без проблем, и если редактор интерпретирует это по-разному, это понятно (так как полный синтаксический анализ YAML стоит дорого)), но неверно.

Ответ 2

У меня была одна и та же проблема, и выяснилось, что с помощью кода escape-кода HTML работает :, к чему я обратился.

Ответ 3

Опираясь на ответы, уже предоставленные в других комментариях: http://yaml.org/spec/1.2/spec.html#id2788097

И из этого: https://yaml.org/spec/1.2/spec.html#id2776092

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

Таким образом, описание станет:

description: "API for bean consuming applications. Examples:: painted pony, lima bean"