Inspects and modifies the preferences for unescaping JSON strings.
JSON allows several forms of escape sequences,
either via the
or via a two- character 'common' form for specific characters.
the single or multi-byte representation of the encoded character is placed into the resultant string,
\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
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
Thus, to disable special handling for newlines and tabs:
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