Inspects and modifies the preferences for unescaping JSON strings. JSON allows several forms of escape sequences, either via the \uXXXX form, or via a two- character 'common' form for specific characters.
\uXXXX
For \uXXXX escapes, the single or multi-byte representation of the encoded character is placed into the resultant string, thus:
\u0041 becomes A
For JSON structural tokens, the backslash is swallowed and the character following it is left as-is. JSON requires that these characters be escaped.
\" becomes " \\ becomes \
Additionally, JSON allows the / character to be escaped (though it is not a JSON structural token, and does not require escaping).
/
\/ becomes /
For certain allowable control and whitespace characters, the escape is translated into its corresponding ASCII value, thus:
\n becomes chr(0x0A) <LF> \r becomes chr(0x0D) <CR> \t becomes chr(0x09) <TAB> \b becomes chr(0x08) <Backspace> \f becomes chr(0x0C) <Form Feed>
Any other two-character escape sequence is not allowed, and JSON::SL will croak upon encountering it.
By default, all that is allowed to be escaped is also automatically unescaped, but this behavior is configurable via the unescape_settings
unescape_settings
Called without any arguments, unescape_settings returns a reference to a hash. Its keys are valid ASCII characters and its values are booleans indicating whether JSON::SL should treat them specially if they follow a \.
JSON::SL
\
Thus, to disable special handling for newlines and tabs:
delete @{$json->unescape_settings}{"\t","\n","\r"};
If unescape_settings is called with one or two arguments, the first argument is taken as the character, and the second argument (if present) is taken as a boolean value which the character should be set to:
Check if forward-slashes are unescaped:
my $fwslash_is_unescaped = $json->unescape_settings("/");
Disable handling for \uXXXX sequences:
$json->unescape_settings("u", 0);
To install JSON::SL::Boolean, copy and paste the appropriate command in to your terminal.
cpanm
cpanm JSON::SL::Boolean
CPAN shell
perl -MCPAN -e shell install JSON::SL::Boolean
For more information on module installation, please visit the detailed CPAN module installation guide.