通过perl解析JSON编码的数组

通过perl解析JSON编码的数组,perl,json,Perl,Json,我使用以下Perl代码来解析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

我使用以下Perl代码来解析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
返回的是arrayref,而不是列表。您必须取消对它的引用才能获取列表:

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

您可能需要阅读和

关于JSON,您可能需要确保安装,因为它比随附的纯Perl实现更快、更稳定。
JSON
模块将在可用时自动使用
JSON::XS

取消引用会有所帮助。现在我可以迭代返回的数组了。但我还是得到了数组的长度=1My。正在使用length(@decoded_json)获取数组的长度!!