【问题标题】:Perl LWP returns JSON output as stringPerl LWP 将 JSON 输出作为字符串返回
【发布时间】:2017-01-22 20:58:12
【问题描述】:

我正在使用 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”来获得输出。

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

任何帮助将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    您需要将 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'
                      }
                    ]
        };
    

    【讨论】:

    • 谢谢。是否有其他方法可以在没有 JSON 模块的情况下解析 JSON 字符串。?因为我没有权限在服务器上安装 JSON 模块。
    • 您必须创建自己的解析器,这很容易出错,非常耗时且有点荒谬。
    • 你可以使用JSON::PP,它是一个核心模块,所以它带有perl,你不需要安装任何东西。它有点慢,但它完成了它的工作。
    • @redneb 我没有意识到它是核心的一部分
    • @stevieb 是的,只需检查corelist JSON::PP。因此,如果您只是将代码更改为使用JSON::PP,它应该可以在没有其他依赖项的情况下工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2021-12-27
    • 2015-10-24
    相关资源
    最近更新 更多