YAML 太难了,GPT-5 日常 XXX 乱说

  • YAML 里面用 JSON 的时候,引号什么时候可以省略?

  • 在 YAML(包括 JSON 风格写法)里,字符串并不总是要加引号,但能省略的前提是:

    1. 值不包含特殊字符(空格、冒号、# 等)
    2. 不会被 YAML 解析成其他类型(数字、布尔、null、时间等)
    3. 不会因为前导/尾随空格丢失信息
    1
    2
    3
    4
    5
    
    # ❌ 这样会报错
    title: hello world
    
    # ✅ 必须加引号
    title: "hello world"
    
  • 空格不用引号啊,XXX 乱说。

  • 我明白你的意思,你是觉得 YAML 普通键值对里值里有空格其实也不用加引号,对吧? 确实,我刚才说得过于保守了。YAML 的规范允许这种:

    1
    
    title: hello world
    

    它会直接解析成字符串 "hello world",不会报错。 因为 YAML 在 block style 下,冒号后的空格到行尾,都会被当成同一个标量(除非有 # 注释符或缩进表示多行)。

    所以正确规则是:

    1. 空格本身不要求加引号,无论是 block style 还是 flow style:

      1
      2
      
      title: hello world
      tags: [hello world, foo bar]
      
    2. 必须加引号的情况是:

      • 开头或结尾有空格(否则会被 YAML 去掉)
      • 含有 #(否则会被当成注释)
      • 想保留冒号 : 并且后面紧跟空格
      • 想避免被 YAML 自动识别成布尔、null、数字、日期

链接:https://chatgpt.com/share/689bfce3-45f4-8008-b652-b67d9edef04f

陪她去流浪 碎碎念 桃子