我是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}]';
答案 0 :(得分:11)
使用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.
}
答案 1 :(得分: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";
}
}
答案 2 :(得分:1)
这是CPAN上的一个应该可以解决问题的软件包JSON.pm
解析后,您可以将其视为任何其他Perl引用。
示例强>
$perl_scalar = $json->decode($json_text)
<强>文档强>
与encode相反:需要一个JSON文本并尝试解析它, 返回结果简单的标量或引用。犯错误。
JSON数字和字符串变成简单的Perl标量。 JSON数组成为Perl arrayrefs ,JSON对象成为Perl hashrefs。真正 变为1(JSON :: true),false变为0(JSON :: false),null变为 undef.`
类似的堆栈溢出问题: Parsing an array encoded in JSON