循环遍历JSON数据并使用Perl打印出一个字段(不是HASH ref)



我需要遍历几个json并打印出每个json的索引1…

我从包含JSON数据的生成字符串开始。然后,我解码字符串并转储它,以显示我正在处理的内容:

my $decoded = decode_json $string
print Dumper $string

结果如下:

$VAR1 = [
      {
        'hdr' => [
                   1,
                   'acknowledged',
                   '',
                   '/home/clanier/dev/test/sds-test/data/JPLIDR2015169.64575',
                   '2015/271-19:10:39.0101355',
                   '2015/271-19:10:39.2599252',
                   ''
                 ]
      },
      {
        'hdr' => [
                   2,
                   'acknowledged',
                   '',
                   '/home/clanier/dev/test/sds-test/data/JPLIDR2015169.64575',
                   '2015/271-19:10:39.3928414',
                   '2015/271-19:10:39.6397269',
                   ''
                 ]
      },
      {
        'hdr' => [
                   3,
                   'acknowledged',
                   '',
                   '/home/clanier/dev/test/sds-test/data/JPLIDR2015169.64575',
                   '2015/271-19:10:39.7726375',
                   '2015/271-19:10:40.0162758',
                   ''
                 ]
      }
    ];

现在我试着循环遍历这个并为每个字符打印已确认的单词:

foreach my $hdr ( $decoded->{hdr} ) {
  print $hdr->[1];
}

我向这个解决方案寻求帮助,但似乎我甚至不能像原来的海报那样远,由于"不是一个HASH引用"错误。我之前能够打印一个特定的,但我需要循环并打印所有的。这是代码:print $$decoded[0]->{'hdr'}->[1];

$decoded是数组引用,而不是散列引用。你不能把它作为散列解引用:->{ .

您可以将其作为数组解引用,但是:

for my $hdr (@$decoded) {
    print $hdr->{hdr}[1];
}

看到perlreftut

最新更新