请求解码不一样

时间:2017-07-25 13:51:08

标签: json perl request

大家好我是perl的新人,但我对其他语言的经验很少。 所以我做了一个简单的代码,从网上获取JSON文件这里是一个电报机器人,但是当我显示它我没有问题,但当我用dedcode_json解码它时,我没有完全相同的输出:///

这里是服务器的输出:

Received reply: {"ok":true,"result":{"id":0000,"first_name":"[MAGA]"}}

现在解码的anwser的输出:

$VAR1 = {
      'ok' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
      'result' => {
                    'id' => 0000,
                    'username' => 'MAGA_bot',
                    'first_name' => '[MAGA]'
                  }
    };

我怎样才能得到结果'解码的json的一部分?

这里是我的代码:

#!/usr/bin/perl

use warnings;

use LWP::UserAgent;
use Data::Dumper;
use JSON;

my $ua = LWP::UserAgent->new;

my $destination = "http://api.telegram.org/bot<TOKEN>/getMe";

my $req = HTTP::Request->new(GET => $destination);
my $succes;
my $json;

my $resp = $ua->request($req);
if ($resp->is_success) {
    my $message = $resp->decoded_content;
    print "Received reply: $message\n";
    $succes = "yes";
    $json = $message;
} else {
    print "HTTP POST error code: ", $resp->code, "\n";
    print "HTTP POST error message: ", $resp->message, "\n";
}

print "Encoding the JSON file \n";
if ($succes eq "yes") {
    my $decoded_json = decode_json($json);
    print Dumper($decoded_json);
} elsif ($succes ne "yes") {
    print "Parsing JSON failed\n";
}

2 个答案:

答案 0 :(得分:1)

由于在这种情况下解码的JSON被转换为Perl哈希引用,因此您可以这样访问它:

my $result = $decoded_json->{result};
print "$result->{first_name}\n";

输出:

[MAGA]

答案 1 :(得分:0)

如果您只想显示复杂数据结构的一部分,那么只需打印数据结构的那一部分。

print Dumper $decoded_json->{result};