【发布时间】:2016-11-29 09:21:17
【问题描述】:
我必须在下面编码:
#!/usr/intel/bin/perl
use strict;
use warnings;
use JSON::XS;
my $json = '{"Object1":{"Year":"2012","Quarter":"Q3","DataType":"Other 3","Environment":"STEVE","Amount":125},"Object2":{"Year":"2012","Quarter":"Q4","DataType":"Other 2","Environment":"MIKE","Amount":500}}';
my $arrayref = decode_json $json;
for my $array(@$arrayref){
for my $key (keys(%$array)){
my $val = $array->{$key};
print "$key: $val\n";
}
}
当我编译它时,它会打印出错误“在 generator.pl 第 12 行不是数组引用。”。
我想将JSON解析为一个对象,并根据该对象的属性获取数据。我该怎么做?
我希望在我解析之后,我可以用来比较字符串,打印,循环等等。
【问题讨论】:
-
这是一个哈希引用。您可以通过
ref内置发现。或者通过处理复杂数据结构的模块之一打印整个内容,例如Data::Dumper。 -
我不知道它会返回什么,因为有不止一个值和属性,所以我希望它以数组的形式出现,所以我可能会以数组[0].Year的形式打印, array[1].Quarter...类似的东西,或者如果没有,我如何使用哈希中的值?
-
@zdim 我该如何使用它?
-
ref告诉您它是HASH还是ARRAY(或其他)或不是参考 - 请参阅ref的文档。顶层可能是 hashref (这不是严格要求的),在你的情况下,这就是你所拥有的。然后你迭代keys %$hashref(你称之为$arrayref)。或者,use Data::Dumper; print Dumper $reference;查看$reference中的全部内容。