大家好我是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";
}
答案 0 :(得分:1)
由于在这种情况下解码的JSON被转换为Perl哈希引用,因此您可以这样访问它:
my $result = $decoded_json->{result};
print "$result->{first_name}\n";
输出:
[MAGA]
答案 1 :(得分:0)
如果您只想显示复杂数据结构的一部分,那么只需打印数据结构的那一部分。
print Dumper $decoded_json->{result};