Как избежать двоеточий и других специальных символов в строке 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"