in reply to Re^2: Convert to JSON, without a module?
in thread Convert to JSON, without a module?

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