如何在YAML字符串中转义冒号和其他特殊字符?

Gus*_*ave 31 yaml escaping swagger

我有以下YAML片段:

description: |
  "API for bean consuming applications.
  Examples: painted pony, lima bean"
Run Code Online (Sandbox Code Playgroud)

:尽管有引号,但Swagger编辑器将冒号()解释为特殊字符.

根据这个问题的公认答案,结肠不应该被视为特殊性质.

这是Swagger的错误还是在引用的文本文字中使用冒号所需的转义序列?

我尝试使用YAML规范找到它但放弃了.

我如何阅读该规范来回答这个问题?

YAML中的单引号(')和双引号(")之间有区别吗?

pipe(|)或大于(>)结构是否仅影响换行处理或特殊字符的处理?

Ant*_*hon 27

我会认为这是一个招摇的错误,但我在其他编辑中遇到过问题,例如在突出显示YAML时.

当字符串标量被单引号 包围时,'....'该字符串中唯一可以完成的转义是插入双引号以指示单引号:

'It''s a good question'
Run Code Online (Sandbox Code Playgroud)

双引号"....",绕过标量字符串使用反斜杠(\)进行转义,并且必须至少转义反斜杠和双引号.此外,您可以转义其他特殊字符(如linefeed(\n))并通过在反斜杠前面转义它来转义行尾.

YAML规范说没有办法逃避文字标量内的字符(从开始|),所以你不能插入额外的换行符或其他转义序列.

对于折叠样式(>),转义行为与文字标量一样.

除了普通标量(没有任何引号或>/的标量)之外的所有字符串标量都|可以包含:后跟空格而没有问题,如果编辑器以不同的方式解释,那是可以理解的(因为完整的YAML解析很昂贵),但是不正确.

  • 就其价值而言,链接的规范适用于YAML 1.2,其中包含对YAML 1.1的重大更改。PyYAML使用1.1规范。参考:http://pyyaml.org/wiki/PyYAML (2认同)

小智 18

我有完全相同的问题,并发现使用HTML转义码工作:,这是我采取的.

  • 那么,为了在 YAML 中转义这些类型的字符,是否应该总是诉诸使用 HTML 代码呢? (2认同)

Ric*_*chE 7

基于其他评论中已经提供的答案:http: //yaml.org/spec/1.2/spec.html#id2788097

从这里开始:https : //yaml.org/spec/1.2/spec.html#id2776092

我发现对于任何引号,您都可以使用两个冒号来转义冒号特殊字符。IE ::

所以描述会变成:

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

从评论更新: 看起来 swagger 特别不喜欢多行字符串,并且在编辑器中,无论引用的文本是两行还是一行,它都显示相同。所以我建议将双引号文本保留在一行上,以避免冒号出现问题。IE

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