Я пытаюсь извлечь значения, которые мне нужны «system1 system2 system3 system4». Я использовал для извлечения содержимого из вывода $json
, как показано ниже. Я получаю ошибку ARRAY(0x210e150)
. Пожалуйста, предложите, как получить только эти значения.Как извлечь значение json в perl
$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";
}
'ARRAY (0x210e150)' не является ошибкой. Это строковое представление/адрес структуры данных. – simbabque
Код не имеет смысла для вывода, который вы показываете. В '$ json' нет массива ref, если это то, что вы показываете как' $ VAR1'. Также вы продолжаете ссылаться на ключ 'docs', но в ваших данных есть только' mydocs'. Если вы выходите 'ARRAY (0x210e150)' из строки 'print '$ json -> {' response '} -> {' docs '}', то это довольно правильно, если предположить, что есть ключ 'docs' (а не 'mydocs'), потому что в нем содержится массив ref с кучей хэш-ссылок внутри, и если вы' напечатаете', то он отобразит адрес. Вы можете 'Dumper', как вы делали это выше, чтобы увидеть что-то еще. – simbabque