我已经将JSON解析为以下数据结构:
$VAR1 = {
'041012020' => {
'item_number' => 'P2345'
},
'041012021' => {
'item_number' => 'I0965'
},
'041012022' => {
'item_number' => 'R2204'
}
};
我试图使用以下代码获取item_numbers的值,它将HASH值作为输出,而不是实际的item_number值。请指导我获取期望值。
foreach my $value (values %{$json_obj}) {
say "Value is: $value,";
}
输出:
Value is: HASH(0x557ce4e2f3c0),
Value is: HASH(0x557ce4e4de18),
Value is: HASH(0x557ce4e4dcf8),
如果我使用相同的代码来获得钥匙,它的工作非常好
foreach my $key (keys %{$json_obj}) {
say "Key is: $key,";
}
输出:
Key is: 041012020,
Key is: 041012020,
Key is: 041012022,
散列元素的值是对散列({ item_number => 'P2345' }
(的引用。当你把一个参考资料串起来时,你会得到这样的结果。如果您想要项目编号,您需要告诉Perl。
for my $value (values %$data) {
say $value->{item_number};
}
或
for my $item_number ( map { $_->{item_number} } values %$data ) {
say $item_number;
}
以下是您的问题的简短代码。
#!usr/bin/perl$VAR1={"041012020"=>{'item_number'=>'P2345'},'041012021'=>{'item_number'=>'I0965'},'041012022'=>{'item_number'=>'R2204'}};为密钥%$VAR1打印"$VAR1->{$_}->{item_number}\n">
要在块中使用:
for my $key (keys %$VAR1) {
print "$VAR1->{$key}->{item_number}n"
}