2015-01-29 6 views
5

Ich sende eine Anfrage an die Endpoint-URL, von dort bekomme ich die Antwort im Erfolgsfall in Form von JSON, aber wenn es fehlschlägt, gibt es einen bestimmten Text zurück.Wie überprüft man, ob Hash-Schlüssel JSON in Perl enthalten?

Senden Anfrage:

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

Also, bevor dies zu tun:

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

Ich möchte überprüfen, ob die reponse im JSON-Format ist oder nicht .wie wir dies in Perl verarbeiten kann freundlich Hilfe in diesem

Antwort

5

Sie können Ausnahme ausgelöst durch from_json(),

fangen 210
my $resp; 
my $ok = eval { $resp = from_json("{}"); 1 }; 
$ok or die "Not valid json"; 

oder einfacher,

my $resp = eval { from_json("rrr") }; 
$resp // die "Not valid json"; 
0

Verwenden JSON oder JSON :: XS die JSON in ein Perl-Struktur zu entschlüsseln.

Einfaches Beispiel:

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. 
} 
0

Sie einen try/catch-Block Try::Tiny

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