Разбор массива, закодированного в JSON через perl - PullRequest
8 голосов
/ 12 сентября 2010

Я использую следующий код Perl для анализа массива в JSON, используя модуль JSON . Но возвращенный массив имеет длину 1, и я не могу перебрать его правильно. Поэтому проблема в том, что я не могу использовать возвращенный массив.

#!/usr/bin/perl
use strict;

my $json_text = '[ {"name" : "abc", "text" : "text1"}, {"name" : "xyz", "text" : "text2"} ]';

use JSON;
use Data::Dumper::Names;

my @decoded_json = decode_json($json_text);
print Dumper(@decoded_json), length(@decoded_json), "\n";

На выходе получается:

$VAR1 = [
     {
        'text' => 'text1',
        'name' => 'abc'
      },
      {
        'text' => 'text2',
        'name' => 'xyz'
      }
    ];
1

Ответы [ 2 ]

20 голосов
/ 12 сентября 2010

Функция decode_json возвращает массив, а не список. Вы должны разыменовать его, чтобы получить список:

my @decoded_json = @{decode_json($json_text)};

Возможно, вы захотите прочитать perldoc perlreftut и perldoc perlref

3 голосов
/ 13 сентября 2010

Что касается JSON, вы можете убедиться, что вы установили модуль JSON::XS , так как он быстрее и стабильнее, чем чистая реализация Perl, включенная в модуль JSON, Модуль JSON будет использовать JSON::XS автоматически, когда он будет доступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...