我有一个几乎是YAML的文件,除了重复的键。有没有现有的方法将重复的键转换为数组?
我的代码看起来像:
use Data::Dumper;
use YAML::XS;
local $YAML::XS::ForbidDuplicateKeys = 1;
my $x = YAML::XS::Load($yaml_string);
print Dumper $x;
示例输入文件:
info:
family: skywalker
person:
id: 1
status: active
details:
gender: male
name:
first: Anakin
last: Skywalker
children: Leia
children: Han Solo
person:
id: 58
status: active
details:
gender: female
name:
first: Padme
last: Amidala
children: Leia
children: Han Solo
所需输入文件:
info:
family: skywalker
person:
-
id: 1
status: active
details:
gender: male
name:
first: Anakin
last: Skywalker
children:
- Leia
- Han Solo
-
id: 58
status: active
details:
gender: female
name:
first: Padme
last: Amidala
children:
- Leia
- Han Solo
1条答案
按热度按时间1tuwyuhd1#
YAMLMap的规范说:
一个 mapping 节点的内容是一个无序的 key/value node pairs 的集合,每个key都是唯一的。
您的键不是唯一的,因此您没有有效的YAML(正如您已经知道的-“我有一个几乎是YAML的文件”)。因此,您不应该期望能够使用YAML解析器解析该文件。
我猜你需要为你的“几乎YAML”编写某种解析器,以你想要的格式生成Perl数据结构。然后你可以使用标准的YAML库将该数据结构转换为YAML。