繁体   English   中英

如何在Perl中检查哈希键是否包含JSON?

[英]How to check whether hash key contain JSON in perl?

我正在向端点url发送请求,如果成功以JSON形式从那里获取响应,但是如果失败,它将返回某些文本。

发送请求:

$data->{response} = $self->{_http}->send($myData);

因此,在执行此操作之前:

$resp = from_json($data->{response});

我想检查响应是否为json格式。我们如何在Perl中处理此问题,请在此提供帮助

您可以捕获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";

使用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.
}

您可以使用Try :: Tiny使用try / catch块

use Try::Tiny;
try {
    $resp = from_json($data->{response});
} catch {
    # Do something if it does not parse
    warn 'Could not parse json'
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM