json - yml 文件中不允许重复标签

标签 json perl yaml

我正在尝试使用 yml 架构文件验证我的示例 yml。

a.yml 数据文件:

    test:
         version1
    test:
         version1

s.yml 架构文件:

     type: map
        mapping:
          test:
            type: str 
            required: yes
            unique: yes

在我的 Perl 代码中,我使用 YML 内置模块并使用架构文件验证我的数据文件,如下所示:

 eval { validate(YAML::LoadFile(s.yml), YAML::LoadFile(a.yml)) };

由于有重复的标签“type:”,我预计验证会失败。有没有办法在验证架构 schema 时不允许 yml 文件中出现重复标签。

我注意到加载失败并出现警告:

Name "YAML::SortKeys" used only once: possible typo at test.plline 21.
YAML Warning: Duplicate map key found. Ignoring.

代码:YAML_LOAD_WARN_DUPLICATE_KEY 线路:1 文档:1

目前我正在使用“use warnings FATAL => qw(all);”,我的脚本仍然通过。不知道为什么它仍然通过警告。 我们可以让它出错吗?

最佳答案

YAML::PP默认情况下禁止重复键 (*)。

use YAML::PP;
my $yaml = <<"EOM";
foo: a
foo: b
EOM
YAML::PP::Load($yaml);

__END__
Duplicate key 'foo' at /.../YAML/PP/Parser.pm line 61.

您正在使用 YAML.pm,但不再推荐它,因为它是为 YAML 1.0 编写的,并且还存在其他问题。

(*) YAML::PP 自版本 0.027 起禁止重复键。在它们被忽略之前。

关于json - yml 文件中不允许重复标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71672399/

相关文章:

database - 有没有一种简单的方法来托管带有小数据文件的程序(尤其是在 Heroku 上)?

mysql - 两个数据库表以两种不同的方式相关......?

json - 为嵌套的json数据创建Hive表

javascript - 如何将json转换为angularjs

perl - 获取perl中最顶层路径元素的有效方法

perl - 维护哈希值的哈希值中的顺序,并输出为 .csv

ruby - 如何在 Ruby 扩展别名中发出 YAML

json - 在没有所有键名的情况下在 Go 中解码 JSON

php - 如何将 JSON 数据从 Android 发送到 php url?

Perl:命名参数验证最佳实践