use strict; use warnings; use Dancer; use JSON qw(decode_json); my $foo_info = param('foo_info'); if ( !eval { decode_json($foo_info); 1 } ) { flash error => "Failed" } if ( !exists $foo_info->{foo_total} || !($foo_info->{foo_total} =~ m/^\$\d+\.\d{2}$/)) { error("Invalid or missing foo info"); return 0; } #### Error decoding json data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (at the line I'm decoding the json) request to POST /path/to/site crashed: Can't use string .. (json data spit out here) as a HASH ref