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

yws3nbqq  于 2023-10-18  发布在  其他
关注(0)|答案(3)|浏览(220)

下面是一个YAML片段:

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

Swagger编辑器将冒号(:)解释为特殊字符,尽管有引号。
根据this question的公认答案,冒号不应被视为特殊字符。
这是Swagger的一个bug,还是在引用文本中使用冒号需要转义序列?
我试着用YAML specification找到这个,但放弃了。
我该如何阅读该规范来回答这个问题?
YAML中的单引号(')和双引号(")有什么区别吗?
管道(|)或大于(>)结构是否只影响换行符处理或特殊字符的处理?

hm2xizp9

hm2xizp91#

我认为这是swagger中的一个bug,但我在其他编辑器中也看到过问题。当突出显示YAML时。
当一个字符串标量被单引号'....'包围时,在该字符串中唯一可以做的转义是插入一个双单引号来表示一个单引号:

'It''s a good question'

当双引号"....",绕过一个标量字符串时,你使用反斜杠(\)进行转义,你必须至少转义反斜杠和双引号。此外,您还可以转义其他特殊字符,如换行符(\n),并通过在行尾前加反斜杠来转义行尾。
YAML规范说,没有办法在字面标量中转义字符(从|开始),所以你不能插入额外的换行符,或者其他转义序列。
对于折叠样式(>),转义行为与文字标量相同。
除了纯标量(没有引号或>/|)之外,所有字符串标量都可以包含:后跟空格,如果编辑器对此进行不同的解释,这是可以理解的(因为完整的YAML解析是昂贵的),但不正确。

i7uq4tfw

i7uq4tfw2#

我遇到了完全相同的问题,发现使用HTML转义代码可以运行:,这就是我所采用的方法。

ncecgwcz

ncecgwcz3#

在其他评论中已经提供的答案的基础上: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"

  • 更新自评论:* 看起来swagger特别不喜欢多行字符串,在编辑器中,引用的文本是两行还是一行,它显示的是一样的。因此,我建议将双引号文本保持在一行上,以避免冒号问题。即

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

相关问题