Perl LWP以字符串形式返回JSON输出

时间:2016-09-14 22:56:19

标签: json perl perl-module lwp lwp-useragent

我正在使用Perl LWP :: UserAgent从API获取响应。除了一个问题,一切都很好。

我正在使用它的API以JSON格式返回响应。但是当我通过LWP模块获得响应时,我将其作为字符串获取,如下所示。

$VAR1 = '
{"status":"success","data":[{"empid":"345232","customername":"Lee gates","dynamicid":"2342342332sd32423"},{"empid":"36.VLXP.013727..CBCL..","customername":"Lee subdirectories","dynamicid":"223f3423dsf23423423"}],"message":""}'

我做了“print Dumper $response”来获取输出。

还有一件事,挑战在于我的客户端不想使用Perl模块来使用JSON(使用JSON :: Parse'parse_json';)。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:4)

您需要将JSON字符串解码为Perl数据结构。如果您的perl版本是5.14+,则核心中包含JSON::PP,因此无需安装。

use warnings;
use strict;

use Data::Dumper;
use JSON::PP qw(decode_json);

my $json = '{"status":"success","data":[{"empid":"345232","customername":"Lee gates","dynamicid":"2342342332sd32423"},{"empid":"36.VLXP.013727..CBCL..","customername":"Lee subdirectories","dynamicid":"223f3423dsf23423423"}],"message":""}';

my $perl = decode_json $json;

print Dumper $perl;

输出:

$VAR1 = {
      'status' => 'success',
      'message' => '',
      'data' => [
                  {
                    'dynamicid' => '2342342332sd32423',
                    'customername' => 'Lee gates',
                    'empid' => '345232'
                  },
                  {
                    'empid' => '36.VLXP.013727..CBCL..',
                    'customername' => 'Lee subdirectories',
                    'dynamicid' => '223f3423dsf23423423'
                  }
                ]
    };