#json #perl
#json #perl
Вопрос:
Как я могу прочитать такую строку JSON без «заголовков»:
[{"SMS":"hello","NUM":12345},{"SMS":"bye","NUM":54321}]
my $json = JSON->new->utf8;
my $perl_data = $json->decode($content);
print ref($perl_data) . "n";
возвращает МАССИВ. Я хотел бы, чтобы каждый элемент.
Спасибо
Комментарии:
1. Выполните итерацию по ней. Ваш JSON содержит массив. Как и ваш Perl. Там нет никаких заголовков любого типа.
2. используя мой $json = JSON->new->utf8; мой @perl_data = $json->decode($content); foreach (@perl_data){ print «$_ n»; } возвращает МАССИВ (0xae699d0)
3. Тот код, который вы только что прокомментировали, не будет работать. У вас будет та же ссылка на массив внутри
@perl_data
, что и у первого элемента. И тогда вы получите что-то вродеARRAY(0x1234567)
в качестве выходных данных.
Ответ №1:
Вокруг ссылок на хэши есть ссылка на массив. Вам нужно выполнить итерацию по ссылке на массив, чтобы получить каждый элемент.
use Data::Dumper;
foreach my $elem (@{ $perl_data }) {
print Dumper $elem;
}
Комментарии:
1. Вау! И если я хотел бы получить доступ к одному элементу?
2. @user476918 внутри
for()
цикла:print "$elem->{SMS}: $elem->{NUM}n";
3. @user476918 Я думаю, вам не хватает некоторых базовых знаний Perl. Вы должны прочитать perldoc.perl.org/perlref.html для начала.