Строка JSON и PERL

#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 для начала.