4

我是 Perl 的新手,想遍历这个 JSON 数据并将其打印到屏幕上。

我怎样才能做到这一点?

$arr = '[{"Year":"2012","Quarter":"Q3","DataType":"Other 3","Environment":"STEVE","Amount":125},{"Year":"2012","Quarter":"Q4","DataType":"Other 2","Environment":"MIKE","Amount":500}]';
4

3 回答 3

12

使用JSONJSON::XS将 JSON 解码为 Perl 结构。

简单的例子:

use strict;
use warnings;

use JSON::XS;

my $json = '[{"Year":"2012","Quarter":"Q3","DataType":"Other 3","Environment":"STEVE","Amount":125},{"Year":"2012","Quarter":"Q4","DataType":"Other 2","Environment":"MIKE","Amount":500}]';

my $arrayref = decode_json $json;

foreach my $item( @$arrayref ) { 
    # fields are in $item->{Year}, $item->{Quarter}, etc.
}
于 2012-07-25T02:52:41.420 回答
10

你有一个哈希数组。

use JSON::XS qw( decode_json );

my $records = decode_json($json_text);
for my $record (@$records) {
   for my $key (keys(%$record)) {
      my $val = $record->{$key};
      say "$key: $val";
    }
}

JSON::XS

于 2012-07-25T03:01:46.493 回答
1

这是 CPAN 上的一个包,它应该可以解决问题,JSON.pm

一旦你解析了它,你就可以像对待任何其他 Perl 引用一样对待它。

例子

$perl_scalar = $json->decode($json_text)

文档

与编码相反:需要一个 JSON 文本并尝试解析它,返回生成的简单标量或引用。错误的呱呱叫。

JSON 数字和字符串成为简单的 Perl 标量。JSON 数组变成 Perl arrayrefs,JSON 对象变成 Perl hashrefs。true 变为 1 (JSON::true),false 变为 0 (JSON::false),null 变为 undef。`

类似的堆栈溢出问题: Parsing an array encoding in JSON

于 2012-07-25T02:49:04.187 回答