Yaml 亚姆林验证

Yaml 亚姆林验证,yaml,snakeyaml,Yaml,Snakeyaml,我有一个像这样的Yaml文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss description: hhh aaa bbb required: true - !argument name: lll description: lll required: true - !argument

我有一个像这样的Yaml文件

    name: hhh_aaa_bbb 
arguments:
    - !argument
        name: inputsss
        description: hhh aaa bbb
        required: true
    - !argument
        name: lll
        description: lll
        required: true
    - !argument
        name: ccc
        description: ccc
        required: true
source:
    !!com.abc.bbc.sss
        uri: !arg input
但是,当我在中使用Yaml Lint验证此Yaml文件时,它会删除所有“!”或“!!”用户参数。为什么会这样

这是我在验证后从yaml lint获得的输出

    --- 
arguments: 
  - 
    description: "hhh aaa bbb"
    name: inputsss
    required: true
  - 
    description: lll
    name: lll
    required: true
  - 
    description: ccc
    name: ccc
    required: true
name: hhh_aaa_bbb
source: 
  uri: input

Yamlint是一个没有印记或任何其他关于作者、目的和使用的YAML实现的信息的网站。如果没有这些信息,您应该非常小心地信任它的输出

只有作者才能告诉你为什么他们认为放下标签是个好主意。结果YAML与没有标记的输入不等价

您还可以使用其他网站进行在线YAML验证:

  • ,YAML引用解析器(YAML 1.2)
  • ,它使用PyYaml作为后端(YAML 1.1)
  • ,它使用NimYAML作为后端(YAML 1.2)
(完全公开:我是NimYAML的作者)

如果您想验证YAML文件而不进行转换,请使用(linter,而不是网站——Yamlint.com不是linter)

对于您的具体输入,它将给出:

$ yamllint file.yaml
file.yaml
  1:1       warning  missing document start "---"  (document-start)
  1:18      error    trailing spaces  (trailing-spaces)
  4:9       error    wrong indentation: expected 6 but found 8  (indentation)
  8:9       error    wrong indentation: expected 6 but found 8  (indentation)
  12:9      error    wrong indentation: expected 6 but found 8  (indentation)
  17:9      error    wrong indentation: expected 4 but found 8  (indentation)

嗨,非常感谢你提供的信息。我没有什么疑问了。我想将带有标记的YAML转换为JSON文件,将JSON转换为带有标记的YAML文件。你能告诉我JSON构造中的标记是什么样的吗?比如,我用你的NIMYAML将问题中提供的相同YAML文件转换成JSON。我得到了一个JSON输出,它排除了标记。我不知道如何在注释中添加代码。但你可以试试我的yaml。我的要求是将JSON转换为带有标记的YAML文件。我现在使用SnakeYAML。我使用Javascript将JSON转换为Yaml。但是我没有得到标签。如何将这些标记从JSON转换为YAML?如果您将JSON转换为YAML,那么您可以自动生成的唯一标记就是来自:
!!空
!!bool
!!int
!!浮动
!!地图
!!seq
!!字符串
,对应于JSON类型(
!!int
!!float
都映射到一个JSON数字)。将JSON粘贴到NimYAML在线工具中,并查看规范输出(这是因为YAML是JSON的超集)。如果您有特定问题,请提出新问题。您的示例不是有效的YAML文件,您的顶级映射以4个空格缩进开始(在
name
之前),第二行为零缩进。如果Yamlint接受这一点,您应该远离使用它。我指的是所有三个(YPaste、在线YAML解析器、NimYaml)。是否有其他合适的在线资源指定正确的YAML格式?Yamlint将您的输入减少到单个键值对,在线YAML解析器也是如此。NimyML接受粘贴的数据,就好像第一行没有缩进一样,这样解析器就不可信了。这三个都应该给出一个错误。你最好用一个小python程序来加载YAML,数据的在线解析器是一个安全隐患。NimYAML也不能正确处理八进制数,但假装是YAML 1.2,远离那个。。。