我正在尝试使用 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/