Perl Json数组
我有json格式和文件中的json对象数组。 我试图将文件加载到Perl中,循环遍历数组中的每个项目(每个json对象)...Perl Json数组
我已经使用了代码波纹管,但它接缝,无论我做什么,perl不是把它当作一个对象的数组,而是作为一个大对象。任何帮助将不胜感激。
my $json_text = do {
open(my $json_fh, "<:encoding(UTF-8)", $filename)
or die("Can't open \$filename\": $!\n");
local $/;
<$json_fh>
};
@objects = JSON->new->utf8->decode($json_text);
print Dumper(@objects);
这听起来像你的文件包含一个JSON数组。在这种情况下,你要decode
调用将返回一个Perl数组的引用,因此,如果你写
my $objects = JSON->new->utf8->decode($json_text)
,您可以访问每个对象为$objects->[0]
,$objects->[1]
等等。或者你可以用
for my $object (@$objects) {
# Do stuff with $object
}
在它们之间迭代
感谢它的工作原理,我从来没有使用perl并试图接管另一个开发人员编写的代码。 perl中的所有@ $%符号对我来说都是新的。我猜@ $ dereferences指向数组的指针? – 2015-03-25 17:45:21
@MehdiAbderezai:Perl由语言学家设计,所以每个标识符都有一个单数形式'$ scalar'(读*这个标量*),一个不相关的复数形式'@ array'(读*这些数组项*)和一个字典形式' %hash'。它内置[匈牙利符号](http://en.wikipedia.org/wiki/Hungarian_notation)。因此,为了访问一个数组(单数)的一个数组(单数),你写'$ array [0]'等等。是的,'@ $'解引用一个数组引用,但最好把'@ $ objects'读作*项目在'$ object' *中,就像'@ array'是* array中的项目* * – Borodin 2015-03-25 19:48:50
你可以发布自卸车输出,也许我们找到一个解决方法。 – 2015-03-25 07:35:46