-
YAML 里面用 JSON 的时候,引号什么时候可以省略?
-
在 YAML(包括 JSON 风格写法)里,字符串并不总是要加引号,但能省略的前提是:
- 值不包含特殊字符(空格、冒号、# 等)
- 不会被 YAML 解析成其他类型(数字、布尔、null、时间等)
- 不会因为前导/尾随空格丢失信息
1 2 3 4 5
# ❌ 这样会报错 title: hello world # ✅ 必须加引号 title: "hello world"
-
空格不用引号啊,XXX 乱说。
-
我明白你的意思,你是觉得 YAML 普通键值对里值里有空格其实也不用加引号,对吧? 确实,我刚才说得过于保守了。YAML 的规范允许这种:
1
title: hello world
它会直接解析成字符串 "hello world",不会报错。 因为 YAML 在 block style 下,冒号后的空格到行尾,都会被当成同一个标量(除非有 # 注释符或缩进表示多行)。
所以正确规则是:
-
空格本身不要求加引号,无论是 block style 还是 flow style:
1 2
title: hello world tags: [hello world, foo bar]
-
必须加引号的情况是:
- 开头或结尾有空格(否则会被 YAML 去掉)
- 含有 #(否则会被当成注释)
- 想保留冒号 : 并且后面紧跟空格
- 想避免被 YAML 自动识别成布尔、null、数字、日期
-
链接:https://chatgpt.com/share/689bfce3-45f4-8008-b652-b67d9edef04f。