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解析很昂贵),但是不正确.
基于其他评论中已经提供的答案: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"