Perl使用LWP::UserAgent请求API后如何解析响应JSON取字段值
问题根因
$request->content返回的是原始JSON字符串,不是Perl哈希结构,无法直接通过键名取值- Perl字符串插值不会自动执行方法调用与解引用操作,因此你写的取值语句只会输出对象拼接的文本,不会返回实际值
解决方法
引入JSON解析模块,将JSON字符串解码为Perl哈希引用后再读取对应键值即可,无需额外调用HTTP::Response模块处理,$ua->get返回的本身就是HTTP::Response对象。
修正后完整代码
#!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use JSON; use Data::Dumper; my $ua = LWP::UserAgent->new; my $response = $ua->get("http://example.com/foo", Authorization => "Bearer abc123", Accept => "application/json" ); # 先判断请求是否成功 if ($response->is_success) { # 把JSON字符串解码为Perl哈希引用 my $result_hash = decode_json($response->content); # 读取对应键值 print "API Version = " . $result_hash->{'apiVersion'} . " \n"; } else { print "请求失败: " . $response->status_line . "\n"; }
内容的提问来源于stack exchange,提问作者JeremyCanfield
相关产品推荐
相关产品推荐

