我试图解析API响应,并创建一个数组
my $data1 = $value->{_embedded}->{'rh:coll'};
print(Dumper($data1));
输出:
$VAR1 = [
{
'_etag' => {
'$oid' => '571e0eb10fdcb17d700e586b'
},
'_id' => 'example.com',
'server_id' => '1',
'enabled' => '1'
},
{
'_etag' => {
'$oid' => '571e0eb90fdcb17d700e586c'
},
'_id' => 'example10.com',
'server_id' => '1',
'enabled' => '1'
}
];
我可以使用
解析值print $value->{_embedded}->{'rh:coll'}->[0]->{_id} . "\t\n";
print $value->{_embedded}->{'rh:coll'}->[1]->{_id} . "\t\n";
输出
example.com
example10.com
如果如果启用设置为 1 ,如何使用网站名称创建数组?
我试过循环思考这个
foreach my $x (%$data1) {
print $x->{_id};
}
答案 0 :(得分:4)
此处$data1
是数组引用,因此您应使用@ {..}
取消引用它。可能你想要这样的东西:
my @sites;
foreach my $x( @ { $data1 } ) {
push( @sites, $x -> {_id} ) if( $x -> {enabled} ); # $x is hash reference
}
# now @sites contain all your sites from API response for which enabled is set to 1.