我试图从json hash
显示密钥执行后,我显示了所有键,但顺序不同。那时我卡住了。
是否有可能保存按键顺序?
非常感谢您的帮助。
感谢。
答案 0 :(得分:1)
根据定义,哈希没有顺序。 Perl哈希和JSON结构也是如此。在Perl中,哈希中键的顺序可能与它们添加到哈希的方式不同。两个JSON结构可以相互等同,但不一样。
如果您需要按特定顺序使用密钥,请使用sort
按照检查时所需的顺序对密钥进行排序。
答案 1 :(得分:-1)
您可以创建一个列表(将被订购),并在每个列表元素中放入另一个包含2个字段(键和值)的列表。这实际上是一个有序的哈希。
#!/usr/bin/perl
%json = qw(key1 value1 key2 value2 key3 value3);
my $result = "keys => { \n";
for my $key (keys %json) {
$result .= "$key\n";
}
$result .= " }\n\n";
print $result;
my $json=[];
for my $key (sort keys %json) {
my @list = ();
push(@list,$key);
push(@list,$json{$key});
push(@$json,\@list);
}
for (@$json) {
print $_->[0], " ", $_->[1], "\n";
}