【问题标题】:Parsing an array encoded in JSON through perl通过 perl 解析以 JSON 编码的数组
【发布时间】:2011-04-11 08:10:43
【问题描述】:

我正在使用以下 Perl 代码来解析 JSON 中的数组,使用 JSON module。但是返回的数组长度为 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

【问题讨论】:

    标签: perl json


    【解决方案1】:

    decode_json function 返回一个数组引用,而不是一个列表。您必须取消引用它才能获取列表:

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

    您可能想阅读perldoc perlreftutperldoc perlref

    【讨论】:

    • 解除引用有点帮助。现在我可以遍历返回的数组。但我仍然得到数组的长度 = 1
    • 我的错。正在使用 length(@decoded_json) 来获取数组的长度!!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      相关资源
      最近更新 更多