That's why
Cpanel::JSON::XS::Type exists.
#!/usr/bin/perl
use warnings;
use strict;
use Cpanel::JSON::XS;
use Cpanel::JSON::XS::Type;
my %out = (username => "",
userid => "",
status => "",
filename => "",
rawfilename => "",
ticket => "",
returnvalue => 0,
message => "");
my $json = encode_json(\%out, {returnvalue => JSON_TYPE_INT,
username => JSON_TYPE_STRING,
userid => JSON_TYPE_STRING,
status => JSON_TYPE_STRING,
filename => JSON_TYPE_STRING,
rawfilename => JSON_TYPE_STRING,
ticket => JSON_TYPE_STRING,
message => JSON_TYPE_STRING});
print $json;
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]