use strictures; use JSON; use Data::Diver "Dive"; my $json = <<''; { "key" : "value" ,"object" : { "elem1": "value1", "elem2": "value2" } ,"array" : [ 0, 1 ] ,"not_defined" : null } my $data = decode_json $json; for my $key (qw/ key object non_exist array not_defined /) { my @exists = Dive( $data, $key ); printf "%20s -> %s\n", $key, @exists ? "yeppers" : "nopers"; } __END__ key -> yeppers object -> yeppers non_exist -> nopers array -> yeppers not_defined -> yeppers