使用Perl循环播放JSON
问题描述:
我是Perl的新手,希望循环播放此JSON数据并将其打印到屏幕上。使用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.
}
答
这里是CPAN一个包,应该做的伎俩,JSON.pm
一旦你解析它,你可以把它像任何其他的Perl引用。
例
$perl_scalar = $json->decode($json_text)
文档
编码的相反:期望一个JSON文本并试图解析它, 返回结果简单的标量或参考。错误的Croaks。
JSON数字和字符串变成简单的Perl标量。 JSON数组成为Perl数组引用,JSON对象成为Perl hashrefs。真正 变为1(JSON ::真),假变为0(JSON :: FALSE)和空变 undef.`
类似的堆栈溢出问题: Parsing an array encoded in JSON
答
你有散列的数组。
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";
}
}
如果你想让它在Perl,那么为什么JavaScript代码? – 2012-07-25 02:42:17
对不起 - 我的错误 - – Mike 2012-07-25 02:45:39
在计算机科学中,我们一直在寻找更一般的解决方案来解决问题,这通常需要从更一般的角度来看问题。您所遇到的具体问题是不知道如何解析JSON,具体解决方案在您接受的答案中提供。但更普遍的问题是不知道在哪里可以找到Perl工具。更一般的解决方案是熟悉CPAN搜索网站,例如https://metacpan.org/ – DavidO 2012-07-25 06:06:50