我正在向端点url发送请求,从那里我以JSON的形式获得响应,但如果失败则返回某些文本。
发送请求:
$data->{response} = $self->{_http}->send($myData);
所以在此之前:
$resp = from_json($data->{response});
我想检查响应是否是json格式。我们如何在Perl中处理这个问题,请帮助解决这个问题
答案 0 :(得分:5)
您可以捕获from_json()
,
my $resp;
my $ok = eval { $resp = from_json("{}"); 1 };
$ok or die "Not valid json";
或更简单,
my $resp = eval { from_json("rrr") };
$resp // die "Not valid json";
答案 1 :(得分:0)
使用JSON或JSON :: XS将JSON解码为Perl结构。
简单示例:
use strict;
use warnings;
use JSON::XS;
my $json = '[{"Year":"2012","Quarter":"Q3","DataType":"Other 3","Environment":"STEVE","Amount":125},{"Year":"2012","Quarter":"Q4","DataType":"Other 2","Environment":"MIKE","Amount":500}]';
my $arrayref = decode_json $json;
foreach my $item( @$arrayref ) {
# fields are in $item->{Year}, $item->{Quarter}, etc.
}
答案 2 :(得分:0)
您可以使用https://www.ravellosystems.com/solutions/esxi-cloud/install-esxi-on-aws
来使用try / catch块use Try::Tiny;
try {
$resp = from_json($data->{response});
} catch {
# Do something if it does not parse
warn 'Could not parse json'
};