Hi,
I was having similar problem with to conversion to json on machine where modules cannot be installed. Here is what I end up with (some pieces copied from JSON::PP):
sub to_json {
my ($ref) = @_;
if(ref($ref) eq "HASH") {
return "{".join(",",map { "\"$_\":".to_json($ref->{$_}) } sort
+ keys %$ref)."}";
}
elsif(ref($ref) eq "ARRAY") {
return "[".join(",",map { to_json($_) } @$ref)."]";
}
else {
return "null" if ! defined $ref;
return $ref if int($ref) eq $ref;
my %esc = (
"\n" => '\n',
"\r" => '\r',
"\t" => '\t',
"\f" => '\f',
"\b" => '\b',
"\"" => '\"',
"\\" => '\\\\',
"\'" => '\\\'',
);
$ref =~ s/([\x22\x5c\n\r\t\f\b])/$esc{$1}/g;
$ref =~ s/([\x00-\x08\x0b\x0e-\x1f])/'\\u00' . unpack('H2', $1
+)/eg;
return "\"$ref\"";
}
}
Just call it with reference
print to_json({ this => 'that', other => 'whatever' });
-- hope it helps, Roman |