【问题标题】:Perl JSON decoding and print key from key value pair [duplicate]Perl JSON解码并从键值对打印键[重复]
【发布时间】:2016-01-18 15:30:12
【问题描述】:

我是 Perl 新手,想循环访问 JSON 数据。
这是我的代码:

use JSON::XS;
my $jsonxx = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
my $text = decode_json($jsonxx);
foreach my $key(keys %$text) {
    print "$key\n";
}

输出是:

e
c
a
b
d

但我希望按给定键值对的顺序输出。

预期输出:

a
b
c
d
e

有人可以帮忙吗?

【问题讨论】:

  • 这是不可能的。 JSON 对象/Perl 哈希根据定义是无序的。但是,您可以对键进行排序,这仍然可能会得到您想要的。如果你需要一个有序的集合,数组就是你想要的。
  • for(sort { $h->{$a} $h->{$b} } keys %$h) { print "$_\n" } 如果你需要排序输出。排序哈希是不可能的

标签: json perl


【解决方案1】:

我猜使用sort 会给你预期的输出:

foreach my $key(sort keys %$text) {
    print "$key\n";
}

【讨论】:

  • JSON 数据可能会有所不同。实际上我希望按添加的键值对顺序输出。
  • @SoorajlalKG 这是一个对象。对象是一组无序的名称/值对。 没有顺序。
  • 你可以通过设置canonical来输出你的JSON。
猜你喜欢
  • 1970-01-01
  • 2013-10-20
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
相关资源
最近更新 更多