我正在尝试提取我需要的值&system; system1 system2 system3 system4' 。我曾经从$json
输出中提取内容,如下所示。我收到错误ARRAY(0x210e150)
。请建议如何仅检索这些值。
$VAR1 = {
'response' => {
'mydocs' => [
{
'host' => 'system1'
},
{
'host' => 'system2'
},
{
'host' => 'system3'
},
{
'host' => 'system4'
}
],
}
};
use LWP::Simple;
use JSON;
use Data::Dumper;
my $url = "https://localhost/content;
my $json = from_json(get($url));
print Dumper($json); # received above output
print "$json->{'response'}->{'docs'}";
for my $data (@$json) {
my $result = ref $data->{response} ? $data->{response}->{docs} : $data->{response};
print "Result is $result\n";
}
答案 0 :(得分:7)
$json
是哈希引用,而不是数组引用,因此循环@$json
不会起作用。你需要做的是深入研究哈希数组开始的位置,并循环遍历:
for my $host (@{ $json->{response}{mydocs} }){
print "host: $host->{host}\n";
}
......而且这个:
print "$json->{'response'}->{'mydocs'}";
...正在打印出mydocs
数组引用的内存地址。我上面做的是循环遍历这个数组引用,一次提取一个包含一个哈希引用的哈希引用,然后处理它。