我是 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}]';
使用JSON或JSON::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.
}
你有一个哈希数组。
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";
}
}
这是 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