| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 JSON version 2.58 |  | 
| 2 ================= |  | 
| 3 |  | 
| 4 "JSON::PP" was earlier included in the "JSON" distribution, |  | 
| 5 but has since Perl 5.14 been a core module. For this reason, |  | 
| 6 "JSON::PP" was removed from the "JSON" distribution and can |  | 
| 7 now be found also in the Perl5 repository at |  | 
| 8 |  | 
| 9     http://perl5.git.perl.org/perl.git |  | 
| 10 |  | 
| 11 (The newest "JSON::PP" version still exists in CPAN.) |  | 
| 12 |  | 
| 13 Instead, the "JSON" distribution will include "JSON::backportPP" |  | 
| 14 for backwards computability. JSON.pm should thus work as it did before. |  | 
| 15 |  | 
| 16 ================= |  | 
| 17 |  | 
| 18 INSTALLATION |  | 
| 19 |  | 
| 20 To install this module type the following: |  | 
| 21 |  | 
| 22    perl Makefile.PL |  | 
| 23    make |  | 
| 24    make test |  | 
| 25    make install |  | 
| 26 |  | 
| 27 if you use cpanm, can install JSON::XS at once. |  | 
| 28 |  | 
| 29    cpanm  --with-recommends JSON |  | 
| 30 |  | 
| 31 |  | 
| 32 NAME |  | 
| 33     JSON - JSON (JavaScript Object Notation) encoder/decoder |  | 
| 34 |  | 
| 35 SYNOPSIS |  | 
| 36      use JSON; # imports encode_json, decode_json, to_json and from_json. |  | 
| 37 |  | 
| 38      # simple and fast interfaces (expect/generate UTF-8) |  | 
| 39 |  | 
| 40      $utf8_encoded_json_text = encode_json $perl_hash_or_arrayref; |  | 
| 41      $perl_hash_or_arrayref  = decode_json $utf8_encoded_json_text; |  | 
| 42 |  | 
| 43      # OO-interface |  | 
| 44 |  | 
| 45      $json = JSON->new->allow_nonref; |  | 
| 46 |  | 
| 47      $json_text   = $json->encode( $perl_scalar ); |  | 
| 48      $perl_scalar = $json->decode( $json_text ); |  | 
| 49 |  | 
| 50      $pretty_printed = $json->pretty->encode( $perl_scalar ); # pretty-printing |  | 
| 51 |  | 
| 52      # If you want to use PP only support features, call with '-support_by_pp' |  | 
| 53      # When XS unsupported feature is enable, using PP (de|en)code instead of XS
       ones. |  | 
| 54 |  | 
| 55      use JSON -support_by_pp; |  | 
| 56 |  | 
| 57      # option-acceptable interfaces (expect/generate UNICODE by default) |  | 
| 58 |  | 
| 59      $json_text   = to_json( $perl_scalar, { ascii => 1, pretty => 1 } ); |  | 
| 60      $perl_scalar = from_json( $json_text, { utf8  => 1 } ); |  | 
| 61 |  | 
| 62      # Between (en|de)code_json and (to|from)_json, if you want to write |  | 
| 63      # a code which communicates to an outer world (encoded in UTF-8), |  | 
| 64      # recommend to use (en|de)code_json. |  | 
| 65 |  | 
| 66 VERSION |  | 
| 67         2.58 |  | 
| 68 |  | 
| 69     This version is compatible with JSON::XS 2.27 and later. |  | 
| 70 |  | 
| 71 NOTE |  | 
| 72     JSON::PP was earlier included in the "JSON" distribution, but has since |  | 
| 73     Perl 5.14 been a core module. For this reason, JSON::PP was removed from |  | 
| 74     the JSON distribution and can now be found also in the Perl5 repository |  | 
| 75     at |  | 
| 76 |  | 
| 77     *   <http://perl5.git.perl.org/perl.git> |  | 
| 78 |  | 
| 79     (The newest JSON::PP version still exists in CPAN.) |  | 
| 80 |  | 
| 81     Instead, the "JSON" distribution will include JSON::backportPP for |  | 
| 82     backwards computability. JSON.pm should thus work as it did before. |  | 
| 83 |  | 
| 84 DESCRIPTION |  | 
| 85      ************************** CAUTION ******************************** |  | 
| 86      * This is 'JSON module version 2' and there are many differences  * |  | 
| 87      * to version 1.xx                                                 * |  | 
| 88      * Please check your applications using old version.              * |  | 
| 89      *   See to 'INCOMPATIBLE CHANGES TO OLD VERSION'                  * |  | 
| 90      ******************************************************************* |  | 
| 91 |  | 
| 92     JSON (JavaScript Object Notation) is a simple data format. See to |  | 
| 93     <http://www.json.org/> and |  | 
| 94     "RFC4627"(<http://www.ietf.org/rfc/rfc4627.txt>). |  | 
| 95 |  | 
| 96     This module converts Perl data structures to JSON and vice versa using |  | 
| 97     either JSON::XS or JSON::PP. |  | 
| 98 |  | 
| 99     JSON::XS is the fastest and most proper JSON module on CPAN which must |  | 
| 100     be compiled and installed in your environment. JSON::PP is a pure-Perl |  | 
| 101     module which is bundled in this distribution and has a strong |  | 
| 102     compatibility to JSON::XS. |  | 
| 103 |  | 
| 104     This module try to use JSON::XS by default and fail to it, use JSON::PP |  | 
| 105     instead. So its features completely depend on JSON::XS or JSON::PP. |  | 
| 106 |  | 
| 107     See to "BACKEND MODULE DECISION". |  | 
| 108 |  | 
| 109     To distinguish the module name 'JSON' and the format type JSON, the |  | 
| 110     former is quoted by C<> (its results vary with your using media), and |  | 
| 111     the latter is left just as it is. |  | 
| 112 |  | 
| 113     Module name : "JSON" |  | 
| 114 |  | 
| 115     Format type : JSON |  | 
| 116 |  | 
| 117   FEATURES |  | 
| 118     *   correct unicode handling |  | 
| 119 |  | 
| 120         This module (i.e. backend modules) knows how to handle Unicode, |  | 
| 121         documents how and when it does so, and even documents what "correct" |  | 
| 122         means. |  | 
| 123 |  | 
| 124         Even though there are limitations, this feature is available since |  | 
| 125         Perl version 5.6. |  | 
| 126 |  | 
| 127         JSON::XS requires Perl 5.8.2 (but works correctly in 5.8.8 or |  | 
| 128         later), so in older versions "JSON" should call JSON::PP as the |  | 
| 129         backend which can be used since Perl 5.005. |  | 
| 130 |  | 
| 131         With Perl 5.8.x JSON::PP works, but from 5.8.0 to 5.8.2, because of |  | 
| 132         a Perl side problem, JSON::PP works slower in the versions. And in |  | 
| 133         5.005, the Unicode handling is not available. See to "UNICODE |  | 
| 134         HANDLING ON PERLS" in JSON::PP for more information. |  | 
| 135 |  | 
| 136         See also to "A FEW NOTES ON UNICODE AND PERL" in JSON::XS and |  | 
| 137         "ENCODING/CODESET_FLAG_NOTES" in JSON::XS. |  | 
| 138 |  | 
| 139     *   round-trip integrity |  | 
| 140 |  | 
| 141         When you serialise a perl data structure using only data types |  | 
| 142         supported by JSON and Perl, the deserialised data structure is |  | 
| 143         identical on the Perl level. (e.g. the string "2.0" doesn't suddenly |  | 
| 144         become "2" just because it looks like a number). There *are* minor |  | 
| 145         exceptions to this, read the "MAPPING" section below to learn about |  | 
| 146         those. |  | 
| 147 |  | 
| 148     *   strict checking of JSON correctness |  | 
| 149 |  | 
| 150         There is no guessing, no generating of illegal JSON texts by |  | 
| 151         default, and only JSON is accepted as input by default (the latter |  | 
| 152         is a security feature). |  | 
| 153 |  | 
| 154         See to "FEATURES" in JSON::XS and "FEATURES" in JSON::PP. |  | 
| 155 |  | 
| 156     *   fast |  | 
| 157 |  | 
| 158         This module returns a JSON::XS object itself if available. Compared |  | 
| 159         to other JSON modules and other serialisers such as Storable, |  | 
| 160         JSON::XS usually compares favorably in terms of speed, too. |  | 
| 161 |  | 
| 162         If not available, "JSON" returns a JSON::PP object instead of |  | 
| 163         JSON::XS and it is very slow as pure-Perl. |  | 
| 164 |  | 
| 165     *   simple to use |  | 
| 166 |  | 
| 167         This module has both a simple functional interface as well as an |  | 
| 168         object oriented interface interface. |  | 
| 169 |  | 
| 170     *   reasonably versatile output formats |  | 
| 171 |  | 
| 172         You can choose between the most compact guaranteed-single-line |  | 
| 173         format possible (nice for simple line-based protocols), a pure-ASCII |  | 
| 174         format (for when your transport is not 8-bit clean, still supports |  | 
| 175         the whole Unicode range), or a pretty-printed format (for when you |  | 
| 176         want to read that stuff). Or you can combine those features in |  | 
| 177         whatever way you like. |  | 
| 178 |  | 
| 179 FUNCTIONAL INTERFACE |  | 
| 180     Some documents are copied and modified from "FUNCTIONAL INTERFACE" in |  | 
| 181     JSON::XS. "to_json" and "from_json" are additional functions. |  | 
| 182 |  | 
| 183   encode_json |  | 
| 184         $json_text = encode_json $perl_scalar |  | 
| 185 |  | 
| 186     Converts the given Perl data structure to a UTF-8 encoded, binary |  | 
| 187     string. |  | 
| 188 |  | 
| 189     This function call is functionally identical to: |  | 
| 190 |  | 
| 191         $json_text = JSON->new->utf8->encode($perl_scalar) |  | 
| 192 |  | 
| 193   decode_json |  | 
| 194         $perl_scalar = decode_json $json_text |  | 
| 195 |  | 
| 196     The opposite of "encode_json": expects an UTF-8 (binary) string and |  | 
| 197     tries to parse that as an UTF-8 encoded JSON text, returning the |  | 
| 198     resulting reference. |  | 
| 199 |  | 
| 200     This function call is functionally identical to: |  | 
| 201 |  | 
| 202         $perl_scalar = JSON->new->utf8->decode($json_text) |  | 
| 203 |  | 
| 204   to_json |  | 
| 205        $json_text = to_json($perl_scalar) |  | 
| 206 |  | 
| 207     Converts the given Perl data structure to a json string. |  | 
| 208 |  | 
| 209     This function call is functionally identical to: |  | 
| 210 |  | 
| 211        $json_text = JSON->new->encode($perl_scalar) |  | 
| 212 |  | 
| 213     Takes a hash reference as the second. |  | 
| 214 |  | 
| 215        $json_text = to_json($perl_scalar, $flag_hashref) |  | 
| 216 |  | 
| 217     So, |  | 
| 218 |  | 
| 219        $json_text = to_json($perl_scalar, {utf8 => 1, pretty => 1}) |  | 
| 220 |  | 
| 221     equivalent to: |  | 
| 222 |  | 
| 223        $json_text = JSON->new->utf8(1)->pretty(1)->encode($perl_scalar) |  | 
| 224 |  | 
| 225     If you want to write a modern perl code which communicates to outer |  | 
| 226     world, you should use "encode_json" (supposed that JSON data are encoded |  | 
| 227     in UTF-8). |  | 
| 228 |  | 
| 229   from_json |  | 
| 230        $perl_scalar = from_json($json_text) |  | 
| 231 |  | 
| 232     The opposite of "to_json": expects a json string and tries to parse it, |  | 
| 233     returning the resulting reference. |  | 
| 234 |  | 
| 235     This function call is functionally identical to: |  | 
| 236 |  | 
| 237         $perl_scalar = JSON->decode($json_text) |  | 
| 238 |  | 
| 239     Takes a hash reference as the second. |  | 
| 240 |  | 
| 241         $perl_scalar = from_json($json_text, $flag_hashref) |  | 
| 242 |  | 
| 243     So, |  | 
| 244 |  | 
| 245         $perl_scalar = from_json($json_text, {utf8 => 1}) |  | 
| 246 |  | 
| 247     equivalent to: |  | 
| 248 |  | 
| 249         $perl_scalar = JSON->new->utf8(1)->decode($json_text) |  | 
| 250 |  | 
| 251     If you want to write a modern perl code which communicates to outer |  | 
| 252     world, you should use "decode_json" (supposed that JSON data are encoded |  | 
| 253     in UTF-8). |  | 
| 254 |  | 
| 255   JSON::is_bool |  | 
| 256         $is_boolean = JSON::is_bool($scalar) |  | 
| 257 |  | 
| 258     Returns true if the passed scalar represents either JSON::true or |  | 
| 259     JSON::false, two constants that act like 1 and 0 respectively and are |  | 
| 260     also used to represent JSON "true" and "false" in Perl strings. |  | 
| 261 |  | 
| 262   JSON::true |  | 
| 263     Returns JSON true value which is blessed object. It "isa" JSON::Boolean |  | 
| 264     object. |  | 
| 265 |  | 
| 266   JSON::false |  | 
| 267     Returns JSON false value which is blessed object. It "isa" JSON::Boolean |  | 
| 268     object. |  | 
| 269 |  | 
| 270   JSON::null |  | 
| 271     Returns "undef". |  | 
| 272 |  | 
| 273     See MAPPING, below, for more information on how JSON values are mapped |  | 
| 274     to Perl. |  | 
| 275 |  | 
| 276 HOW DO I DECODE A DATA FROM OUTER AND ENCODE TO OUTER |  | 
| 277     This section supposes that your perl version is 5.8 or later. |  | 
| 278 |  | 
| 279     If you know a JSON text from an outer world - a network, a file content, |  | 
| 280     and so on, is encoded in UTF-8, you should use "decode_json" or "JSON" |  | 
| 281     module object with "utf8" enable. And the decoded result will contain |  | 
| 282     UNICODE characters. |  | 
| 283 |  | 
| 284       # from network |  | 
| 285       my $json        = JSON->new->utf8; |  | 
| 286       my $json_text   = CGI->new->param( 'json_data' ); |  | 
| 287       my $perl_scalar = $json->decode( $json_text ); |  | 
| 288 |  | 
| 289       # from file content |  | 
| 290       local $/; |  | 
| 291       open( my $fh, '<', 'json.data' ); |  | 
| 292       $json_text   = <$fh>; |  | 
| 293       $perl_scalar = decode_json( $json_text ); |  | 
| 294 |  | 
| 295     If an outer data is not encoded in UTF-8, firstly you should "decode" |  | 
| 296     it. |  | 
| 297 |  | 
| 298       use Encode; |  | 
| 299       local $/; |  | 
| 300       open( my $fh, '<', 'json.data' ); |  | 
| 301       my $encoding = 'cp932'; |  | 
| 302       my $unicode_json_text = decode( $encoding, <$fh> ); # UNICODE |  | 
| 303 |  | 
| 304       # or you can write the below code. |  | 
| 305       # |  | 
| 306       # open( my $fh, "<:encoding($encoding)", 'json.data' ); |  | 
| 307       # $unicode_json_text = <$fh>; |  | 
| 308 |  | 
| 309     In this case, $unicode_json_text is of course UNICODE string. So you |  | 
| 310     cannot use "decode_json" nor "JSON" module object with "utf8" enable. |  | 
| 311     Instead of them, you use "JSON" module object with "utf8" disable or |  | 
| 312     "from_json". |  | 
| 313 |  | 
| 314       $perl_scalar = $json->utf8(0)->decode( $unicode_json_text ); |  | 
| 315       # or |  | 
| 316       $perl_scalar = from_json( $unicode_json_text ); |  | 
| 317 |  | 
| 318     Or "encode 'utf8'" and "decode_json": |  | 
| 319 |  | 
| 320       $perl_scalar = decode_json( encode( 'utf8', $unicode_json_text ) ); |  | 
| 321       # this way is not efficient. |  | 
| 322 |  | 
| 323     And now, you want to convert your $perl_scalar into JSON data and send |  | 
| 324     it to an outer world - a network or a file content, and so on. |  | 
| 325 |  | 
| 326     Your data usually contains UNICODE strings and you want the converted |  | 
| 327     data to be encoded in UTF-8, you should use "encode_json" or "JSON" |  | 
| 328     module object with "utf8" enable. |  | 
| 329 |  | 
| 330       print encode_json( $perl_scalar ); # to a network? file? or display? |  | 
| 331       # or |  | 
| 332       print $json->utf8->encode( $perl_scalar ); |  | 
| 333 |  | 
| 334     If $perl_scalar does not contain UNICODE but $encoding-encoded strings |  | 
| 335     for some reason, then its characters are regarded as latin1 for perl |  | 
| 336     (because it does not concern with your $encoding). You cannot use |  | 
| 337     "encode_json" nor "JSON" module object with "utf8" enable. Instead of |  | 
| 338     them, you use "JSON" module object with "utf8" disable or "to_json". |  | 
| 339     Note that the resulted text is a UNICODE string but no problem to print |  | 
| 340     it. |  | 
| 341 |  | 
| 342       # $perl_scalar contains $encoding encoded string values |  | 
| 343       $unicode_json_text = $json->utf8(0)->encode( $perl_scalar ); |  | 
| 344       # or |  | 
| 345       $unicode_json_text = to_json( $perl_scalar ); |  | 
| 346       # $unicode_json_text consists of characters less than 0x100 |  | 
| 347       print $unicode_json_text; |  | 
| 348 |  | 
| 349     Or "decode $encoding" all string values and "encode_json": |  | 
| 350 |  | 
| 351       $perl_scalar->{ foo } = decode( $encoding, $perl_scalar->{ foo } ); |  | 
| 352       # ... do it to each string values, then encode_json |  | 
| 353       $json_text = encode_json( $perl_scalar ); |  | 
| 354 |  | 
| 355     This method is a proper way but probably not efficient. |  | 
| 356 |  | 
| 357     See to Encode, perluniintro. |  | 
| 358 |  | 
| 359 COMMON OBJECT-ORIENTED INTERFACE |  | 
| 360   new |  | 
| 361         $json = JSON->new |  | 
| 362 |  | 
| 363     Returns a new "JSON" object inherited from either JSON::XS or JSON::PP |  | 
| 364     that can be used to de/encode JSON strings. |  | 
| 365 |  | 
| 366     All boolean flags described below are by default *disabled*. |  | 
| 367 |  | 
| 368     The mutators for flags all return the JSON object again and thus calls |  | 
| 369     can be chained: |  | 
| 370 |  | 
| 371        my $json = JSON->new->utf8->space_after->encode({a => [1,2]}) |  | 
| 372        => {"a": [1, 2]} |  | 
| 373 |  | 
| 374   ascii |  | 
| 375         $json = $json->ascii([$enable]) |  | 
| 376 |  | 
| 377         $enabled = $json->get_ascii |  | 
| 378 |  | 
| 379     If $enable is true (or missing), then the encode method will not |  | 
| 380     generate characters outside the code range 0..127. Any Unicode |  | 
| 381     characters outside that range will be escaped using either a single |  | 
| 382     \uXXXX or a double \uHHHH\uLLLLL escape sequence, as per RFC4627. |  | 
| 383 |  | 
| 384     If $enable is false, then the encode method will not escape Unicode |  | 
| 385     characters unless required by the JSON syntax or other flags. This |  | 
| 386     results in a faster and more compact format. |  | 
| 387 |  | 
| 388     This feature depends on the used Perl version and environment. |  | 
| 389 |  | 
| 390     See to "UNICODE HANDLING ON PERLS" in JSON::PP if the backend is PP. |  | 
| 391 |  | 
| 392       JSON->new->ascii(1)->encode([chr 0x10401]) |  | 
| 393       => ["\ud801\udc01"] |  | 
| 394 |  | 
| 395   latin1 |  | 
| 396         $json = $json->latin1([$enable]) |  | 
| 397 |  | 
| 398         $enabled = $json->get_latin1 |  | 
| 399 |  | 
| 400     If $enable is true (or missing), then the encode method will encode the |  | 
| 401     resulting JSON text as latin1 (or iso-8859-1), escaping any characters |  | 
| 402     outside the code range 0..255. |  | 
| 403 |  | 
| 404     If $enable is false, then the encode method will not escape Unicode |  | 
| 405     characters unless required by the JSON syntax or other flags. |  | 
| 406 |  | 
| 407       JSON->new->latin1->encode (["\x{89}\x{abc}"] |  | 
| 408       => ["\x{89}\\u0abc"]    # (perl syntax, U+abc escaped, U+89 not) |  | 
| 409 |  | 
| 410   utf8 |  | 
| 411         $json = $json->utf8([$enable]) |  | 
| 412 |  | 
| 413         $enabled = $json->get_utf8 |  | 
| 414 |  | 
| 415     If $enable is true (or missing), then the encode method will encode the |  | 
| 416     JSON result into UTF-8, as required by many protocols, while the decode |  | 
| 417     method expects to be handled an UTF-8-encoded string. Please note that |  | 
| 418     UTF-8-encoded strings do not contain any characters outside the range |  | 
| 419     0..255, they are thus useful for bytewise/binary I/O. |  | 
| 420 |  | 
| 421     In future versions, enabling this option might enable autodetection of |  | 
| 422     the UTF-16 and UTF-32 encoding families, as described in RFC4627. |  | 
| 423 |  | 
| 424     If $enable is false, then the encode method will return the JSON string |  | 
| 425     as a (non-encoded) Unicode string, while decode expects thus a Unicode |  | 
| 426     string. Any decoding or encoding (e.g. to UTF-8 or UTF-16) needs to be |  | 
| 427     done yourself, e.g. using the Encode module. |  | 
| 428 |  | 
| 429     Example, output UTF-16BE-encoded JSON: |  | 
| 430 |  | 
| 431       use Encode; |  | 
| 432       $jsontext = encode "UTF-16BE", JSON::XS->new->encode ($object); |  | 
| 433 |  | 
| 434     Example, decode UTF-32LE-encoded JSON: |  | 
| 435 |  | 
| 436       use Encode; |  | 
| 437       $object = JSON::XS->new->decode (decode "UTF-32LE", $jsontext); |  | 
| 438 |  | 
| 439     See to "UNICODE HANDLING ON PERLS" in JSON::PP if the backend is PP. |  | 
| 440 |  | 
| 441   pretty |  | 
| 442         $json = $json->pretty([$enable]) |  | 
| 443 |  | 
| 444     This enables (or disables) all of the "indent", "space_before" and |  | 
| 445     "space_after" (and in the future possibly more) flags in one call to |  | 
| 446     generate the most readable (or most compact) form possible. |  | 
| 447 |  | 
| 448     Equivalent to: |  | 
| 449 |  | 
| 450        $json->indent->space_before->space_after |  | 
| 451 |  | 
| 452     The indent space length is three and JSON::XS cannot change the indent |  | 
| 453     space length. |  | 
| 454 |  | 
| 455   indent |  | 
| 456         $json = $json->indent([$enable]) |  | 
| 457 |  | 
| 458         $enabled = $json->get_indent |  | 
| 459 |  | 
| 460     If $enable is true (or missing), then the "encode" method will use a |  | 
| 461     multiline format as output, putting every array member or object/hash |  | 
| 462     key-value pair into its own line, identifying them properly. |  | 
| 463 |  | 
| 464     If $enable is false, no newlines or indenting will be produced, and the |  | 
| 465     resulting JSON text is guaranteed not to contain any "newlines". |  | 
| 466 |  | 
| 467     This setting has no effect when decoding JSON texts. |  | 
| 468 |  | 
| 469     The indent space length is three. With JSON::PP, you can also access |  | 
| 470     "indent_length" to change indent space length. |  | 
| 471 |  | 
| 472   space_before |  | 
| 473         $json = $json->space_before([$enable]) |  | 
| 474 |  | 
| 475         $enabled = $json->get_space_before |  | 
| 476 |  | 
| 477     If $enable is true (or missing), then the "encode" method will add an |  | 
| 478     extra optional space before the ":" separating keys from values in JSON |  | 
| 479     objects. |  | 
| 480 |  | 
| 481     If $enable is false, then the "encode" method will not add any extra |  | 
| 482     space at those places. |  | 
| 483 |  | 
| 484     This setting has no effect when decoding JSON texts. |  | 
| 485 |  | 
| 486     Example, space_before enabled, space_after and indent disabled: |  | 
| 487 |  | 
| 488        {"key" :"value"} |  | 
| 489 |  | 
| 490   space_after |  | 
| 491         $json = $json->space_after([$enable]) |  | 
| 492 |  | 
| 493         $enabled = $json->get_space_after |  | 
| 494 |  | 
| 495     If $enable is true (or missing), then the "encode" method will add an |  | 
| 496     extra optional space after the ":" separating keys from values in JSON |  | 
| 497     objects and extra whitespace after the "," separating key-value pairs |  | 
| 498     and array members. |  | 
| 499 |  | 
| 500     If $enable is false, then the "encode" method will not add any extra |  | 
| 501     space at those places. |  | 
| 502 |  | 
| 503     This setting has no effect when decoding JSON texts. |  | 
| 504 |  | 
| 505     Example, space_before and indent disabled, space_after enabled: |  | 
| 506 |  | 
| 507        {"key": "value"} |  | 
| 508 |  | 
| 509   relaxed |  | 
| 510         $json = $json->relaxed([$enable]) |  | 
| 511 |  | 
| 512         $enabled = $json->get_relaxed |  | 
| 513 |  | 
| 514     If $enable is true (or missing), then "decode" will accept some |  | 
| 515     extensions to normal JSON syntax (see below). "encode" will not be |  | 
| 516     affected in anyway. *Be aware that this option makes you accept invalid |  | 
| 517     JSON texts as if they were valid!*. I suggest only to use this option to |  | 
| 518     parse application-specific files written by humans (configuration files, |  | 
| 519     resource files etc.) |  | 
| 520 |  | 
| 521     If $enable is false (the default), then "decode" will only accept valid |  | 
| 522     JSON texts. |  | 
| 523 |  | 
| 524     Currently accepted extensions are: |  | 
| 525 |  | 
| 526     *   list items can have an end-comma |  | 
| 527 |  | 
| 528         JSON *separates* array elements and key-value pairs with commas. |  | 
| 529         This can be annoying if you write JSON texts manually and want to be |  | 
| 530         able to quickly append elements, so this extension accepts comma at |  | 
| 531         the end of such items not just between them: |  | 
| 532 |  | 
| 533            [ |  | 
| 534               1, |  | 
| 535               2, <- this comma not normally allowed |  | 
| 536            ] |  | 
| 537            { |  | 
| 538               "k1": "v1", |  | 
| 539               "k2": "v2", <- this comma not normally allowed |  | 
| 540            } |  | 
| 541 |  | 
| 542     *   shell-style '#'-comments |  | 
| 543 |  | 
| 544         Whenever JSON allows whitespace, shell-style comments are |  | 
| 545         additionally allowed. They are terminated by the first |  | 
| 546         carriage-return or line-feed character, after which more white-space |  | 
| 547         and comments are allowed. |  | 
| 548 |  | 
| 549           [ |  | 
| 550              1, # this comment not allowed in JSON |  | 
| 551                 # neither this one... |  | 
| 552           ] |  | 
| 553 |  | 
| 554   canonical |  | 
| 555         $json = $json->canonical([$enable]) |  | 
| 556 |  | 
| 557         $enabled = $json->get_canonical |  | 
| 558 |  | 
| 559     If $enable is true (or missing), then the "encode" method will output |  | 
| 560     JSON objects by sorting their keys. This is adding a comparatively high |  | 
| 561     overhead. |  | 
| 562 |  | 
| 563     If $enable is false, then the "encode" method will output key-value |  | 
| 564     pairs in the order Perl stores them (which will likely change between |  | 
| 565     runs of the same script). |  | 
| 566 |  | 
| 567     This option is useful if you want the same data structure to be encoded |  | 
| 568     as the same JSON text (given the same overall settings). If it is |  | 
| 569     disabled, the same hash might be encoded differently even if contains |  | 
| 570     the same data, as key-value pairs have no inherent ordering in Perl. |  | 
| 571 |  | 
| 572     This setting has no effect when decoding JSON texts. |  | 
| 573 |  | 
| 574   allow_nonref |  | 
| 575         $json = $json->allow_nonref([$enable]) |  | 
| 576 |  | 
| 577         $enabled = $json->get_allow_nonref |  | 
| 578 |  | 
| 579     If $enable is true (or missing), then the "encode" method can convert a |  | 
| 580     non-reference into its corresponding string, number or null JSON value, |  | 
| 581     which is an extension to RFC4627. Likewise, "decode" will accept those |  | 
| 582     JSON values instead of croaking. |  | 
| 583 |  | 
| 584     If $enable is false, then the "encode" method will croak if it isn't |  | 
| 585     passed an arrayref or hashref, as JSON texts must either be an object or |  | 
| 586     array. Likewise, "decode" will croak if given something that is not a |  | 
| 587     JSON object or array. |  | 
| 588 |  | 
| 589        JSON->new->allow_nonref->encode ("Hello, World!") |  | 
| 590        => "Hello, World!" |  | 
| 591 |  | 
| 592   allow_unknown |  | 
| 593         $json = $json->allow_unknown ([$enable]) |  | 
| 594 |  | 
| 595         $enabled = $json->get_allow_unknown |  | 
| 596 |  | 
| 597     If $enable is true (or missing), then "encode" will *not* throw an |  | 
| 598     exception when it encounters values it cannot represent in JSON (for |  | 
| 599     example, filehandles) but instead will encode a JSON "null" value. Note |  | 
| 600     that blessed objects are not included here and are handled separately by |  | 
| 601     c<allow_nonref>. |  | 
| 602 |  | 
| 603     If $enable is false (the default), then "encode" will throw an exception |  | 
| 604     when it encounters anything it cannot encode as JSON. |  | 
| 605 |  | 
| 606     This option does not affect "decode" in any way, and it is recommended |  | 
| 607     to leave it off unless you know your communications partner. |  | 
| 608 |  | 
| 609   allow_blessed |  | 
| 610         $json = $json->allow_blessed([$enable]) |  | 
| 611 |  | 
| 612         $enabled = $json->get_allow_blessed |  | 
| 613 |  | 
| 614     If $enable is true (or missing), then the "encode" method will not barf |  | 
| 615     when it encounters a blessed reference. Instead, the value of the |  | 
| 616     convert_blessed option will decide whether "null" ("convert_blessed" |  | 
| 617     disabled or no "TO_JSON" method found) or a representation of the object |  | 
| 618     ("convert_blessed" enabled and "TO_JSON" method found) is being encoded. |  | 
| 619     Has no effect on "decode". |  | 
| 620 |  | 
| 621     If $enable is false (the default), then "encode" will throw an exception |  | 
| 622     when it encounters a blessed object. |  | 
| 623 |  | 
| 624   convert_blessed |  | 
| 625         $json = $json->convert_blessed([$enable]) |  | 
| 626 |  | 
| 627         $enabled = $json->get_convert_blessed |  | 
| 628 |  | 
| 629     If $enable is true (or missing), then "encode", upon encountering a |  | 
| 630     blessed object, will check for the availability of the "TO_JSON" method |  | 
| 631     on the object's class. If found, it will be called in scalar context and |  | 
| 632     the resulting scalar will be encoded instead of the object. If no |  | 
| 633     "TO_JSON" method is found, the value of "allow_blessed" will decide what |  | 
| 634     to do. |  | 
| 635 |  | 
| 636     The "TO_JSON" method may safely call die if it wants. If "TO_JSON" |  | 
| 637     returns other blessed objects, those will be handled in the same way. |  | 
| 638     "TO_JSON" must take care of not causing an endless recursion cycle (== |  | 
| 639     crash) in this case. The name of "TO_JSON" was chosen because other |  | 
| 640     methods called by the Perl core (== not by the user of the object) are |  | 
| 641     usually in upper case letters and to avoid collisions with the "to_json" |  | 
| 642     function or method. |  | 
| 643 |  | 
| 644     This setting does not yet influence "decode" in any way. |  | 
| 645 |  | 
| 646     If $enable is false, then the "allow_blessed" setting will decide what |  | 
| 647     to do when a blessed object is found. |  | 
| 648 |  | 
| 649     convert_blessed_universally mode |  | 
| 650         If use "JSON" with "-convert_blessed_universally", the |  | 
| 651         "UNIVERSAL::TO_JSON" subroutine is defined as the below code: |  | 
| 652 |  | 
| 653            *UNIVERSAL::TO_JSON = sub { |  | 
| 654                my $b_obj = B::svref_2object( $_[0] ); |  | 
| 655                return    $b_obj->isa('B::HV') ? { %{ $_[0] } } |  | 
| 656                        : $b_obj->isa('B::AV') ? [ @{ $_[0] } ] |  | 
| 657                        : undef |  | 
| 658                        ; |  | 
| 659            } |  | 
| 660 |  | 
| 661         This will cause that "encode" method converts simple blessed objects |  | 
| 662         into JSON objects as non-blessed object. |  | 
| 663 |  | 
| 664            JSON -convert_blessed_universally; |  | 
| 665            $json->allow_blessed->convert_blessed->encode( $blessed_object ) |  | 
| 666 |  | 
| 667         This feature is experimental and may be removed in the future. |  | 
| 668 |  | 
| 669   filter_json_object |  | 
| 670         $json = $json->filter_json_object([$coderef]) |  | 
| 671 |  | 
| 672     When $coderef is specified, it will be called from "decode" each time it |  | 
| 673     decodes a JSON object. The only argument passed to the coderef is a |  | 
| 674     reference to the newly-created hash. If the code references returns a |  | 
| 675     single scalar (which need not be a reference), this value (i.e. a copy |  | 
| 676     of that scalar to avoid aliasing) is inserted into the deserialised data |  | 
| 677     structure. If it returns an empty list (NOTE: *not* "undef", which is a |  | 
| 678     valid scalar), the original deserialised hash will be inserted. This |  | 
| 679     setting can slow down decoding considerably. |  | 
| 680 |  | 
| 681     When $coderef is omitted or undefined, any existing callback will be |  | 
| 682     removed and "decode" will not change the deserialised hash in any way. |  | 
| 683 |  | 
| 684     Example, convert all JSON objects into the integer 5: |  | 
| 685 |  | 
| 686        my $js = JSON->new->filter_json_object (sub { 5 }); |  | 
| 687        # returns [5] |  | 
| 688        $js->decode ('[{}]'); # the given subroutine takes a hash reference. |  | 
| 689        # throw an exception because allow_nonref is not enabled |  | 
| 690        # so a lone 5 is not allowed. |  | 
| 691        $js->decode ('{"a":1, "b":2}'); |  | 
| 692 |  | 
| 693   filter_json_single_key_object |  | 
| 694         $json = $json->filter_json_single_key_object($key [=> $coderef]) |  | 
| 695 |  | 
| 696     Works remotely similar to "filter_json_object", but is only called for |  | 
| 697     JSON objects having a single key named $key. |  | 
| 698 |  | 
| 699     This $coderef is called before the one specified via |  | 
| 700     "filter_json_object", if any. It gets passed the single value in the |  | 
| 701     JSON object. If it returns a single value, it will be inserted into the |  | 
| 702     data structure. If it returns nothing (not even "undef" but the empty |  | 
| 703     list), the callback from "filter_json_object" will be called next, as if |  | 
| 704     no single-key callback were specified. |  | 
| 705 |  | 
| 706     If $coderef is omitted or undefined, the corresponding callback will be |  | 
| 707     disabled. There can only ever be one callback for a given key. |  | 
| 708 |  | 
| 709     As this callback gets called less often then the "filter_json_object" |  | 
| 710     one, decoding speed will not usually suffer as much. Therefore, |  | 
| 711     single-key objects make excellent targets to serialise Perl objects |  | 
| 712     into, especially as single-key JSON objects are as close to the |  | 
| 713     type-tagged value concept as JSON gets (it's basically an ID/VALUE |  | 
| 714     tuple). Of course, JSON does not support this in any way, so you need to |  | 
| 715     make sure your data never looks like a serialised Perl hash. |  | 
| 716 |  | 
| 717     Typical names for the single object key are "__class_whatever__", or |  | 
| 718     "$__dollars_are_rarely_used__$" or "}ugly_brace_placement", or even |  | 
| 719     things like "__class_md5sum(classname)__", to reduce the risk of |  | 
| 720     clashing with real hashes. |  | 
| 721 |  | 
| 722     Example, decode JSON objects of the form "{ "__widget__" => <id> }" into |  | 
| 723     the corresponding $WIDGET{<id>} object: |  | 
| 724 |  | 
| 725        # return whatever is in $WIDGET{5}: |  | 
| 726        JSON |  | 
| 727           ->new |  | 
| 728           ->filter_json_single_key_object (__widget__ => sub { |  | 
| 729                 $WIDGET{ $_[0] } |  | 
| 730              }) |  | 
| 731           ->decode ('{"__widget__": 5') |  | 
| 732 |  | 
| 733        # this can be used with a TO_JSON method in some "widget" class |  | 
| 734        # for serialisation to json: |  | 
| 735        sub WidgetBase::TO_JSON { |  | 
| 736           my ($self) = @_; |  | 
| 737 |  | 
| 738           unless ($self->{id}) { |  | 
| 739              $self->{id} = ..get..some..id..; |  | 
| 740              $WIDGET{$self->{id}} = $self; |  | 
| 741           } |  | 
| 742 |  | 
| 743           { __widget__ => $self->{id} } |  | 
| 744        } |  | 
| 745 |  | 
| 746   shrink |  | 
| 747         $json = $json->shrink([$enable]) |  | 
| 748 |  | 
| 749         $enabled = $json->get_shrink |  | 
| 750 |  | 
| 751     With JSON::XS, this flag resizes strings generated by either "encode" or |  | 
| 752     "decode" to their minimum size possible. This can save memory when your |  | 
| 753     JSON texts are either very very long or you have many short strings. It |  | 
| 754     will also try to downgrade any strings to octet-form if possible: perl |  | 
| 755     stores strings internally either in an encoding called UTF-X or in |  | 
| 756     octet-form. The latter cannot store everything but uses less space in |  | 
| 757     general (and some buggy Perl or C code might even rely on that internal |  | 
| 758     representation being used). |  | 
| 759 |  | 
| 760     With JSON::PP, it is noop about resizing strings but tries |  | 
| 761     "utf8::downgrade" to the returned string by "encode". See to utf8. |  | 
| 762 |  | 
| 763     See to "OBJECT-ORIENTED INTERFACE" in JSON::XS and "METHODS" in |  | 
| 764     JSON::PP. |  | 
| 765 |  | 
| 766   max_depth |  | 
| 767         $json = $json->max_depth([$maximum_nesting_depth]) |  | 
| 768 |  | 
| 769         $max_depth = $json->get_max_depth |  | 
| 770 |  | 
| 771     Sets the maximum nesting level (default 512) accepted while encoding or |  | 
| 772     decoding. If a higher nesting level is detected in JSON text or a Perl |  | 
| 773     data structure, then the encoder and decoder will stop and croak at that |  | 
| 774     point. |  | 
| 775 |  | 
| 776     Nesting level is defined by number of hash- or arrayrefs that the |  | 
| 777     encoder needs to traverse to reach a given point or the number of "{" or |  | 
| 778     "[" characters without their matching closing parenthesis crossed to |  | 
| 779     reach a given character in a string. |  | 
| 780 |  | 
| 781     If no argument is given, the highest possible setting will be used, |  | 
| 782     which is rarely useful. |  | 
| 783 |  | 
| 784     Note that nesting is implemented by recursion in C. The default value |  | 
| 785     has been chosen to be as large as typical operating systems allow |  | 
| 786     without crashing. (JSON::XS) |  | 
| 787 |  | 
| 788     With JSON::PP as the backend, when a large value (100 or more) was set |  | 
| 789     and it de/encodes a deep nested object/text, it may raise a warning |  | 
| 790     'Deep recursion on subroutine' at the perl runtime phase. |  | 
| 791 |  | 
| 792     See "SECURITY CONSIDERATIONS" in JSON::XS for more info on why this is |  | 
| 793     useful. |  | 
| 794 |  | 
| 795   max_size |  | 
| 796         $json = $json->max_size([$maximum_string_size]) |  | 
| 797 |  | 
| 798         $max_size = $json->get_max_size |  | 
| 799 |  | 
| 800     Set the maximum length a JSON text may have (in bytes) where decoding is |  | 
| 801     being attempted. The default is 0, meaning no limit. When "decode" is |  | 
| 802     called on a string that is longer then this many bytes, it will not |  | 
| 803     attempt to decode the string but throw an exception. This setting has no |  | 
| 804     effect on "encode" (yet). |  | 
| 805 |  | 
| 806     If no argument is given, the limit check will be deactivated (same as |  | 
| 807     when 0 is specified). |  | 
| 808 |  | 
| 809     See "SECURITY CONSIDERATIONS" in JSON::XS, below, for more info on why |  | 
| 810     this is useful. |  | 
| 811 |  | 
| 812   encode |  | 
| 813         $json_text = $json->encode($perl_scalar) |  | 
| 814 |  | 
| 815     Converts the given Perl data structure (a simple scalar or a reference |  | 
| 816     to a hash or array) to its JSON representation. Simple scalars will be |  | 
| 817     converted into JSON string or number sequences, while references to |  | 
| 818     arrays become JSON arrays and references to hashes become JSON objects. |  | 
| 819     Undefined Perl values (e.g. "undef") become JSON "null" values. |  | 
| 820     References to the integers 0 and 1 are converted into "true" and |  | 
| 821     "false". |  | 
| 822 |  | 
| 823   decode |  | 
| 824         $perl_scalar = $json->decode($json_text) |  | 
| 825 |  | 
| 826     The opposite of "encode": expects a JSON text and tries to parse it, |  | 
| 827     returning the resulting simple scalar or reference. Croaks on error. |  | 
| 828 |  | 
| 829     JSON numbers and strings become simple Perl scalars. JSON arrays become |  | 
| 830     Perl arrayrefs and JSON objects become Perl hashrefs. "true" becomes 1 |  | 
| 831     ("JSON::true"), "false" becomes 0 ("JSON::false") and "null" becomes |  | 
| 832     "undef". |  | 
| 833 |  | 
| 834   decode_prefix |  | 
| 835         ($perl_scalar, $characters) = $json->decode_prefix($json_text) |  | 
| 836 |  | 
| 837     This works like the "decode" method, but instead of raising an exception |  | 
| 838     when there is trailing garbage after the first JSON object, it will |  | 
| 839     silently stop parsing there and return the number of characters consumed |  | 
| 840     so far. |  | 
| 841 |  | 
| 842        JSON->new->decode_prefix ("[1] the tail") |  | 
| 843        => ([], 3) |  | 
| 844 |  | 
| 845     See to "OBJECT-ORIENTED INTERFACE" in JSON::XS |  | 
| 846 |  | 
| 847   property |  | 
| 848         $boolean = $json->property($property_name) |  | 
| 849 |  | 
| 850     Returns a boolean value about above some properties. |  | 
| 851 |  | 
| 852     The available properties are "ascii", "latin1", "utf8", |  | 
| 853     "indent","space_before", "space_after", "relaxed", "canonical", |  | 
| 854     "allow_nonref", "allow_unknown", "allow_blessed", "convert_blessed", |  | 
| 855     "shrink", "max_depth" and "max_size". |  | 
| 856 |  | 
| 857        $boolean = $json->property('utf8'); |  | 
| 858         => 0 |  | 
| 859        $json->utf8; |  | 
| 860        $boolean = $json->property('utf8'); |  | 
| 861         => 1 |  | 
| 862 |  | 
| 863     Sets the property with a given boolean value. |  | 
| 864 |  | 
| 865         $json = $json->property($property_name => $boolean); |  | 
| 866 |  | 
| 867     With no argument, it returns all the above properties as a hash |  | 
| 868     reference. |  | 
| 869 |  | 
| 870         $flag_hashref = $json->property(); |  | 
| 871 |  | 
| 872 INCREMENTAL PARSING |  | 
| 873     Most of this section are copied and modified from "INCREMENTAL PARSING" |  | 
| 874     in JSON::XS. |  | 
| 875 |  | 
| 876     In some cases, there is the need for incremental parsing of JSON texts. |  | 
| 877     This module does allow you to parse a JSON stream incrementally. It does |  | 
| 878     so by accumulating text until it has a full JSON object, which it then |  | 
| 879     can decode. This process is similar to using "decode_prefix" to see if a |  | 
| 880     full JSON object is available, but is much more efficient (and can be |  | 
| 881     implemented with a minimum of method calls). |  | 
| 882 |  | 
| 883     The backend module will only attempt to parse the JSON text once it is |  | 
| 884     sure it has enough text to get a decisive result, using a very simple |  | 
| 885     but truly incremental parser. This means that it sometimes won't stop as |  | 
| 886     early as the full parser, for example, it doesn't detect parenthesis |  | 
| 887     mismatches. The only thing it guarantees is that it starts decoding as |  | 
| 888     soon as a syntactically valid JSON text has been seen. This means you |  | 
| 889     need to set resource limits (e.g. "max_size") to ensure the parser will |  | 
| 890     stop parsing in the presence if syntax errors. |  | 
| 891 |  | 
| 892     The following methods implement this incremental parser. |  | 
| 893 |  | 
| 894   incr_parse |  | 
| 895         $json->incr_parse( [$string] ) # void context |  | 
| 896 |  | 
| 897         $obj_or_undef = $json->incr_parse( [$string] ) # scalar context |  | 
| 898 |  | 
| 899         @obj_or_empty = $json->incr_parse( [$string] ) # list context |  | 
| 900 |  | 
| 901     This is the central parsing function. It can both append new text and |  | 
| 902     extract objects from the stream accumulated so far (both of these |  | 
| 903     functions are optional). |  | 
| 904 |  | 
| 905     If $string is given, then this string is appended to the already |  | 
| 906     existing JSON fragment stored in the $json object. |  | 
| 907 |  | 
| 908     After that, if the function is called in void context, it will simply |  | 
| 909     return without doing anything further. This can be used to add more text |  | 
| 910     in as many chunks as you want. |  | 
| 911 |  | 
| 912     If the method is called in scalar context, then it will try to extract |  | 
| 913     exactly *one* JSON object. If that is successful, it will return this |  | 
| 914     object, otherwise it will return "undef". If there is a parse error, |  | 
| 915     this method will croak just as "decode" would do (one can then use |  | 
| 916     "incr_skip" to skip the erroneous part). This is the most common way of |  | 
| 917     using the method. |  | 
| 918 |  | 
| 919     And finally, in list context, it will try to extract as many objects |  | 
| 920     from the stream as it can find and return them, or the empty list |  | 
| 921     otherwise. For this to work, there must be no separators between the |  | 
| 922     JSON objects or arrays, instead they must be concatenated back-to-back. |  | 
| 923     If an error occurs, an exception will be raised as in the scalar context |  | 
| 924     case. Note that in this case, any previously-parsed JSON texts will be |  | 
| 925     lost. |  | 
| 926 |  | 
| 927     Example: Parse some JSON arrays/objects in a given string and return |  | 
| 928     them. |  | 
| 929 |  | 
| 930         my @objs = JSON->new->incr_parse ("[5][7][1,2]"); |  | 
| 931 |  | 
| 932   incr_text |  | 
| 933         $lvalue_string = $json->incr_text |  | 
| 934 |  | 
| 935     This method returns the currently stored JSON fragment as an lvalue, |  | 
| 936     that is, you can manipulate it. This *only* works when a preceding call |  | 
| 937     to "incr_parse" in *scalar context* successfully returned an object. |  | 
| 938     Under all other circumstances you must not call this function (I mean |  | 
| 939     it. although in simple tests it might actually work, it *will* fail |  | 
| 940     under real world conditions). As a special exception, you can also call |  | 
| 941     this method before having parsed anything. |  | 
| 942 |  | 
| 943     This function is useful in two cases: a) finding the trailing text after |  | 
| 944     a JSON object or b) parsing multiple JSON objects separated by non-JSON |  | 
| 945     text (such as commas). |  | 
| 946 |  | 
| 947         $json->incr_text =~ s/\s*,\s*//; |  | 
| 948 |  | 
| 949     In Perl 5.005, "lvalue" attribute is not available. You must write codes |  | 
| 950     like the below: |  | 
| 951 |  | 
| 952         $string = $json->incr_text; |  | 
| 953         $string =~ s/\s*,\s*//; |  | 
| 954         $json->incr_text( $string ); |  | 
| 955 |  | 
| 956   incr_skip |  | 
| 957         $json->incr_skip |  | 
| 958 |  | 
| 959     This will reset the state of the incremental parser and will remove the |  | 
| 960     parsed text from the input buffer. This is useful after "incr_parse" |  | 
| 961     died, in which case the input buffer and incremental parser state is |  | 
| 962     left unchanged, to skip the text parsed so far and to reset the parse |  | 
| 963     state. |  | 
| 964 |  | 
| 965   incr_reset |  | 
| 966         $json->incr_reset |  | 
| 967 |  | 
| 968     This completely resets the incremental parser, that is, after this call, |  | 
| 969     it will be as if the parser had never parsed anything. |  | 
| 970 |  | 
| 971     This is useful if you want to repeatedly parse JSON objects and want to |  | 
| 972     ignore any trailing data, which means you have to reset the parser after |  | 
| 973     each successful decode. |  | 
| 974 |  | 
| 975     See to "INCREMENTAL PARSING" in JSON::XS for examples. |  | 
| 976 |  | 
| 977 JSON::PP SUPPORT METHODS |  | 
| 978     The below methods are JSON::PP own methods, so when "JSON" works with |  | 
| 979     JSON::PP (i.e. the created object is a JSON::PP object), available. See |  | 
| 980     to "JSON::PP OWN METHODS" in JSON::PP in detail. |  | 
| 981 |  | 
| 982     If you use "JSON" with additional "-support_by_pp", some methods are |  | 
| 983     available even with JSON::XS. See to "USE PP FEATURES EVEN THOUGH XS |  | 
| 984     BACKEND". |  | 
| 985 |  | 
| 986        BEING { $ENV{PERL_JSON_BACKEND} = 'JSON::XS' } |  | 
| 987 |  | 
| 988        use JSON -support_by_pp; |  | 
| 989 |  | 
| 990        my $json = JSON->new; |  | 
| 991        $json->allow_nonref->escape_slash->encode("/"); |  | 
| 992 |  | 
| 993        # functional interfaces too. |  | 
| 994        print to_json(["/"], {escape_slash => 1}); |  | 
| 995        print from_json('["foo"]', {utf8 => 1}); |  | 
| 996 |  | 
| 997     If you do not want to all functions but "-support_by_pp", use |  | 
| 998     "-no_export". |  | 
| 999 |  | 
| 1000        use JSON -support_by_pp, -no_export; |  | 
| 1001        # functional interfaces are not exported. |  | 
| 1002 |  | 
| 1003   allow_singlequote |  | 
| 1004         $json = $json->allow_singlequote([$enable]) |  | 
| 1005 |  | 
| 1006     If $enable is true (or missing), then "decode" will accept any JSON |  | 
| 1007     strings quoted by single quotations that are invalid JSON format. |  | 
| 1008 |  | 
| 1009         $json->allow_singlequote->decode({"foo":'bar'}); |  | 
| 1010         $json->allow_singlequote->decode({'foo':"bar"}); |  | 
| 1011         $json->allow_singlequote->decode({'foo':'bar'}); |  | 
| 1012 |  | 
| 1013     As same as the "relaxed" option, this option may be used to parse |  | 
| 1014     application-specific files written by humans. |  | 
| 1015 |  | 
| 1016   allow_barekey |  | 
| 1017         $json = $json->allow_barekey([$enable]) |  | 
| 1018 |  | 
| 1019     If $enable is true (or missing), then "decode" will accept bare keys of |  | 
| 1020     JSON object that are invalid JSON format. |  | 
| 1021 |  | 
| 1022     As same as the "relaxed" option, this option may be used to parse |  | 
| 1023     application-specific files written by humans. |  | 
| 1024 |  | 
| 1025         $json->allow_barekey->decode('{foo:"bar"}'); |  | 
| 1026 |  | 
| 1027   allow_bignum |  | 
| 1028         $json = $json->allow_bignum([$enable]) |  | 
| 1029 |  | 
| 1030     If $enable is true (or missing), then "decode" will convert the big |  | 
| 1031     integer Perl cannot handle as integer into a Math::BigInt object and |  | 
| 1032     convert a floating number (any) into a Math::BigFloat. |  | 
| 1033 |  | 
| 1034     On the contrary, "encode" converts "Math::BigInt" objects and |  | 
| 1035     "Math::BigFloat" objects into JSON numbers with "allow_blessed" enable. |  | 
| 1036 |  | 
| 1037        $json->allow_nonref->allow_blessed->allow_bignum; |  | 
| 1038        $bigfloat = $json->decode('2.000000000000000000000000001'); |  | 
| 1039        print $json->encode($bigfloat); |  | 
| 1040        # => 2.000000000000000000000000001 |  | 
| 1041 |  | 
| 1042     See to MAPPING about the conversion of JSON number. |  | 
| 1043 |  | 
| 1044   loose |  | 
| 1045         $json = $json->loose([$enable]) |  | 
| 1046 |  | 
| 1047     The unescaped [\x00-\x1f\x22\x2f\x5c] strings are invalid in JSON |  | 
| 1048     strings and the module doesn't allow to "decode" to these (except for |  | 
| 1049     \x2f). If $enable is true (or missing), then "decode" will accept these |  | 
| 1050     unescaped strings. |  | 
| 1051 |  | 
| 1052         $json->loose->decode(qq|["abc |  | 
| 1053                                        def"]|); |  | 
| 1054 |  | 
| 1055     See to "JSON::PP OWN METHODS" in JSON::PP. |  | 
| 1056 |  | 
| 1057   escape_slash |  | 
| 1058         $json = $json->escape_slash([$enable]) |  | 
| 1059 |  | 
| 1060     According to JSON Grammar, *slash* (U+002F) is escaped. But by default |  | 
| 1061     JSON backend modules encode strings without escaping slash. |  | 
| 1062 |  | 
| 1063     If $enable is true (or missing), then "encode" will escape slashes. |  | 
| 1064 |  | 
| 1065   indent_length |  | 
| 1066         $json = $json->indent_length($length) |  | 
| 1067 |  | 
| 1068     With JSON::XS, The indent space length is 3 and cannot be changed. With |  | 
| 1069     JSON::PP, it sets the indent space length with the given $length. The |  | 
| 1070     default is 3. The acceptable range is 0 to 15. |  | 
| 1071 |  | 
| 1072   sort_by |  | 
| 1073         $json = $json->sort_by($function_name) |  | 
| 1074         $json = $json->sort_by($subroutine_ref) |  | 
| 1075 |  | 
| 1076     If $function_name or $subroutine_ref are set, its sort routine are used. |  | 
| 1077 |  | 
| 1078        $js = $pc->sort_by(sub { $JSON::PP::a cmp $JSON::PP::b })->encode($obj); |  | 
| 1079        # is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|); |  | 
| 1080 |  | 
| 1081        $js = $pc->sort_by('own_sort')->encode($obj); |  | 
| 1082        # is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|); |  | 
| 1083 |  | 
| 1084        sub JSON::PP::own_sort { $JSON::PP::a cmp $JSON::PP::b } |  | 
| 1085 |  | 
| 1086     As the sorting routine runs in the JSON::PP scope, the given subroutine |  | 
| 1087     name and the special variables $a, $b will begin with 'JSON::PP::'. |  | 
| 1088 |  | 
| 1089     If $integer is set, then the effect is same as "canonical" on. |  | 
| 1090 |  | 
| 1091     See to "JSON::PP OWN METHODS" in JSON::PP. |  | 
| 1092 |  | 
| 1093 MAPPING |  | 
| 1094     This section is copied from JSON::XS and modified to "JSON". JSON::XS |  | 
| 1095     and JSON::PP mapping mechanisms are almost equivalent. |  | 
| 1096 |  | 
| 1097     See to "MAPPING" in JSON::XS. |  | 
| 1098 |  | 
| 1099   JSON -> PERL |  | 
| 1100     object |  | 
| 1101         A JSON object becomes a reference to a hash in Perl. No ordering of |  | 
| 1102         object keys is preserved (JSON does not preserver object key |  | 
| 1103         ordering itself). |  | 
| 1104 |  | 
| 1105     array |  | 
| 1106         A JSON array becomes a reference to an array in Perl. |  | 
| 1107 |  | 
| 1108     string |  | 
| 1109         A JSON string becomes a string scalar in Perl - Unicode codepoints |  | 
| 1110         in JSON are represented by the same codepoints in the Perl string, |  | 
| 1111         so no manual decoding is necessary. |  | 
| 1112 |  | 
| 1113     number |  | 
| 1114         A JSON number becomes either an integer, numeric (floating point) or |  | 
| 1115         string scalar in perl, depending on its range and any fractional |  | 
| 1116         parts. On the Perl level, there is no difference between those as |  | 
| 1117         Perl handles all the conversion details, but an integer may take |  | 
| 1118         slightly less memory and might represent more values exactly than |  | 
| 1119         floating point numbers. |  | 
| 1120 |  | 
| 1121         If the number consists of digits only, "JSON" will try to represent |  | 
| 1122         it as an integer value. If that fails, it will try to represent it |  | 
| 1123         as a numeric (floating point) value if that is possible without loss |  | 
| 1124         of precision. Otherwise it will preserve the number as a string |  | 
| 1125         value (in which case you lose roundtripping ability, as the JSON |  | 
| 1126         number will be re-encoded to a JSON string). |  | 
| 1127 |  | 
| 1128         Numbers containing a fractional or exponential part will always be |  | 
| 1129         represented as numeric (floating point) values, possibly at a loss |  | 
| 1130         of precision (in which case you might lose perfect roundtripping |  | 
| 1131         ability, but the JSON number will still be re-encoded as a JSON |  | 
| 1132         number). |  | 
| 1133 |  | 
| 1134         Note that precision is not accuracy - binary floating point values |  | 
| 1135         cannot represent most decimal fractions exactly, and when converting |  | 
| 1136         from and to floating point, "JSON" only guarantees precision up to |  | 
| 1137         but not including the least significant bit. |  | 
| 1138 |  | 
| 1139         If the backend is JSON::PP and "allow_bignum" is enable, the big |  | 
| 1140         integers and the numeric can be optionally converted into |  | 
| 1141         Math::BigInt and Math::BigFloat objects. |  | 
| 1142 |  | 
| 1143     true, false |  | 
| 1144         These JSON atoms become "JSON::true" and "JSON::false", |  | 
| 1145         respectively. They are overloaded to act almost exactly like the |  | 
| 1146         numbers 1 and 0. You can check whether a scalar is a JSON boolean by |  | 
| 1147         using the "JSON::is_bool" function. |  | 
| 1148 |  | 
| 1149         If "JSON::true" and "JSON::false" are used as strings or compared as |  | 
| 1150         strings, they represent as "true" and "false" respectively. |  | 
| 1151 |  | 
| 1152            print JSON::true . "\n"; |  | 
| 1153             => true |  | 
| 1154            print JSON::true + 1; |  | 
| 1155             => 1 |  | 
| 1156 |  | 
| 1157            ok(JSON::true eq 'true'); |  | 
| 1158            ok(JSON::true eq  '1'); |  | 
| 1159            ok(JSON::true == 1); |  | 
| 1160 |  | 
| 1161         "JSON" will install these missing overloading features to the |  | 
| 1162         backend modules. |  | 
| 1163 |  | 
| 1164     null |  | 
| 1165         A JSON null atom becomes "undef" in Perl. |  | 
| 1166 |  | 
| 1167         "JSON::null" returns "undef". |  | 
| 1168 |  | 
| 1169   PERL -> JSON |  | 
| 1170     The mapping from Perl to JSON is slightly more difficult, as Perl is a |  | 
| 1171     truly typeless language, so we can only guess which JSON type is meant |  | 
| 1172     by a Perl value. |  | 
| 1173 |  | 
| 1174     hash references |  | 
| 1175         Perl hash references become JSON objects. As there is no inherent |  | 
| 1176         ordering in hash keys (or JSON objects), they will usually be |  | 
| 1177         encoded in a pseudo-random order that can change between runs of the |  | 
| 1178         same program but stays generally the same within a single run of a |  | 
| 1179         program. "JSON" optionally sort the hash keys (determined by the |  | 
| 1180         *canonical* flag), so the same data structure will serialise to the |  | 
| 1181         same JSON text (given same settings and version of JSON::XS), but |  | 
| 1182         this incurs a runtime overhead and is only rarely useful, e.g. when |  | 
| 1183         you want to compare some JSON text against another for equality. |  | 
| 1184 |  | 
| 1185         In future, the ordered object feature will be added to JSON::PP |  | 
| 1186         using "tie" mechanism. |  | 
| 1187 |  | 
| 1188     array references |  | 
| 1189         Perl array references become JSON arrays. |  | 
| 1190 |  | 
| 1191     other references |  | 
| 1192         Other unblessed references are generally not allowed and will cause |  | 
| 1193         an exception to be thrown, except for references to the integers 0 |  | 
| 1194         and 1, which get turned into "false" and "true" atoms in JSON. You |  | 
| 1195         can also use "JSON::false" and "JSON::true" to improve readability. |  | 
| 1196 |  | 
| 1197            to_json [\0,JSON::true]      # yields [false,true] |  | 
| 1198 |  | 
| 1199     JSON::true, JSON::false, JSON::null |  | 
| 1200         These special values become JSON true and JSON false values, |  | 
| 1201         respectively. You can also use "\1" and "\0" directly if you want. |  | 
| 1202 |  | 
| 1203         JSON::null returns "undef". |  | 
| 1204 |  | 
| 1205     blessed objects |  | 
| 1206         Blessed objects are not directly representable in JSON. See the |  | 
| 1207         "allow_blessed" and "convert_blessed" methods on various options on |  | 
| 1208         how to deal with this: basically, you can choose between throwing an |  | 
| 1209         exception, encoding the reference as if it weren't blessed, or |  | 
| 1210         provide your own serialiser method. |  | 
| 1211 |  | 
| 1212         With "convert_blessed_universally" mode, "encode" converts blessed |  | 
| 1213         hash references or blessed array references (contains other blessed |  | 
| 1214         references) into JSON members and arrays. |  | 
| 1215 |  | 
| 1216            use JSON -convert_blessed_universally; |  | 
| 1217            JSON->new->allow_blessed->convert_blessed->encode( $blessed_object ); |  | 
| 1218 |  | 
| 1219         See to convert_blessed. |  | 
| 1220 |  | 
| 1221     simple scalars |  | 
| 1222         Simple Perl scalars (any scalar that is not a reference) are the |  | 
| 1223         most difficult objects to encode: JSON::XS and JSON::PP will encode |  | 
| 1224         undefined scalars as JSON "null" values, scalars that have last been |  | 
| 1225         used in a string context before encoding as JSON strings, and |  | 
| 1226         anything else as number value: |  | 
| 1227 |  | 
| 1228            # dump as number |  | 
| 1229            encode_json [2]                      # yields [2] |  | 
| 1230            encode_json [-3.0e17]                # yields [-3e+17] |  | 
| 1231            my $value = 5; encode_json [$value]  # yields [5] |  | 
| 1232 |  | 
| 1233            # used as string, so dump as string |  | 
| 1234            print $value; |  | 
| 1235            encode_json [$value]                 # yields ["5"] |  | 
| 1236 |  | 
| 1237            # undef becomes null |  | 
| 1238            encode_json [undef]                  # yields [null] |  | 
| 1239 |  | 
| 1240         You can force the type to be a string by stringifying it: |  | 
| 1241 |  | 
| 1242            my $x = 3.1; # some variable containing a number |  | 
| 1243            "$x";        # stringified |  | 
| 1244            $x .= "";    # another, more awkward way to stringify |  | 
| 1245            print $x;    # perl does it for you, too, quite often |  | 
| 1246 |  | 
| 1247         You can force the type to be a number by numifying it: |  | 
| 1248 |  | 
| 1249            my $x = "3"; # some variable containing a string |  | 
| 1250            $x += 0;     # numify it, ensuring it will be dumped as a number |  | 
| 1251            $x *= 1;     # same thing, the choice is yours. |  | 
| 1252 |  | 
| 1253         You can not currently force the type in other, less obscure, ways. |  | 
| 1254 |  | 
| 1255         Note that numerical precision has the same meaning as under Perl (so |  | 
| 1256         binary to decimal conversion follows the same rules as in Perl, |  | 
| 1257         which can differ to other languages). Also, your perl interpreter |  | 
| 1258         might expose extensions to the floating point numbers of your |  | 
| 1259         platform, such as infinities or NaN's - these cannot be represented |  | 
| 1260         in JSON, and it is an error to pass those in. |  | 
| 1261 |  | 
| 1262     Big Number |  | 
| 1263         If the backend is JSON::PP and "allow_bignum" is enable, "encode" |  | 
| 1264         converts "Math::BigInt" objects and "Math::BigFloat" objects into |  | 
| 1265         JSON numbers. |  | 
| 1266 |  | 
| 1267 JSON and ECMAscript |  | 
| 1268     See to "JSON and ECMAscript" in JSON::XS. |  | 
| 1269 |  | 
| 1270 JSON and YAML |  | 
| 1271     JSON is not a subset of YAML. See to "JSON and YAML" in JSON::XS. |  | 
| 1272 |  | 
| 1273 BACKEND MODULE DECISION |  | 
| 1274     When you use "JSON", "JSON" tries to "use" JSON::XS. If this call |  | 
| 1275     failed, it will "uses" JSON::PP. The required JSON::XS version is *2.2* |  | 
| 1276     or later. |  | 
| 1277 |  | 
| 1278     The "JSON" constructor method returns an object inherited from the |  | 
| 1279     backend module, and JSON::XS object is a blessed scalar reference while |  | 
| 1280     JSON::PP is a blessed hash reference. |  | 
| 1281 |  | 
| 1282     So, your program should not depend on the backend module, especially |  | 
| 1283     returned objects should not be modified. |  | 
| 1284 |  | 
| 1285      my $json = JSON->new; # XS or PP? |  | 
| 1286      $json->{stash} = 'this is xs object'; # this code may raise an error! |  | 
| 1287 |  | 
| 1288     To check the backend module, there are some methods - "backend", "is_pp" |  | 
| 1289     and "is_xs". |  | 
| 1290 |  | 
| 1291       JSON->backend; # 'JSON::XS' or 'JSON::PP' |  | 
| 1292 |  | 
| 1293       JSON->backend->is_pp: # 0 or 1 |  | 
| 1294 |  | 
| 1295       JSON->backend->is_xs: # 1 or 0 |  | 
| 1296 |  | 
| 1297       $json->is_xs; # 1 or 0 |  | 
| 1298 |  | 
| 1299       $json->is_pp; # 0 or 1 |  | 
| 1300 |  | 
| 1301     If you set an environment variable "PERL_JSON_BACKEND", the calling |  | 
| 1302     action will be changed. |  | 
| 1303 |  | 
| 1304     PERL_JSON_BACKEND = 0 or PERL_JSON_BACKEND = 'JSON::PP' |  | 
| 1305         Always use JSON::PP |  | 
| 1306 |  | 
| 1307     PERL_JSON_BACKEND == 1 or PERL_JSON_BACKEND = 'JSON::XS,JSON::PP' |  | 
| 1308         (The default) Use compiled JSON::XS if it is properly compiled & |  | 
| 1309         installed, otherwise use JSON::PP. |  | 
| 1310 |  | 
| 1311     PERL_JSON_BACKEND == 2 or PERL_JSON_BACKEND = 'JSON::XS' |  | 
| 1312         Always use compiled JSON::XS, die if it isn't properly compiled & |  | 
| 1313         installed. |  | 
| 1314 |  | 
| 1315     PERL_JSON_BACKEND = 'JSON::backportPP' |  | 
| 1316         Always use JSON::backportPP. JSON::backportPP is JSON::PP back port |  | 
| 1317         module. "JSON" includes JSON::backportPP instead of JSON::PP. |  | 
| 1318 |  | 
| 1319     These ideas come from DBI::PurePerl mechanism. |  | 
| 1320 |  | 
| 1321     example: |  | 
| 1322 |  | 
| 1323      BEGIN { $ENV{PERL_JSON_BACKEND} = 'JSON::PP' } |  | 
| 1324      use JSON; # always uses JSON::PP |  | 
| 1325 |  | 
| 1326     In future, it may be able to specify another module. |  | 
| 1327 |  | 
| 1328 USE PP FEATURES EVEN THOUGH XS BACKEND |  | 
| 1329     Many methods are available with either JSON::XS or JSON::PP and when the |  | 
| 1330     backend module is JSON::XS, if any JSON::PP specific (i.e. JSON::XS |  | 
| 1331     unsupported) method is called, it will "warn" and be noop. |  | 
| 1332 |  | 
| 1333     But If you "use" "JSON" passing the optional string "-support_by_pp", it |  | 
| 1334     makes a part of those unsupported methods available. This feature is |  | 
| 1335     achieved by using JSON::PP in "de/encode". |  | 
| 1336 |  | 
| 1337        BEGIN { $ENV{PERL_JSON_BACKEND} = 2 } # with JSON::XS |  | 
| 1338        use JSON -support_by_pp; |  | 
| 1339        my $json = JSON->new; |  | 
| 1340        $json->allow_nonref->escape_slash->encode("/"); |  | 
| 1341 |  | 
| 1342     At this time, the returned object is a "JSON::Backend::XS::Supportable" |  | 
| 1343     object (re-blessed XS object), and by checking JSON::XS unsupported |  | 
| 1344     flags in de/encoding, can support some unsupported methods - "loose", |  | 
| 1345     "allow_bignum", "allow_barekey", "allow_singlequote", "escape_slash" and |  | 
| 1346     "indent_length". |  | 
| 1347 |  | 
| 1348     When any unsupported methods are not enable, "XS de/encode" will be used |  | 
| 1349     as is. The switch is achieved by changing the symbolic tables. |  | 
| 1350 |  | 
| 1351     "-support_by_pp" is effective only when the backend module is JSON::XS |  | 
| 1352     and it makes the de/encoding speed down a bit. |  | 
| 1353 |  | 
| 1354     See to "JSON::PP SUPPORT METHODS". |  | 
| 1355 |  | 
| 1356 INCOMPATIBLE CHANGES TO OLD VERSION |  | 
| 1357     There are big incompatibility between new version (2.00) and old (1.xx). |  | 
| 1358     If you use old "JSON" 1.xx in your code, please check it. |  | 
| 1359 |  | 
| 1360     See to "Transition ways from 1.xx to 2.xx." |  | 
| 1361 |  | 
| 1362     jsonToObj and objToJson are obsoleted. |  | 
| 1363         Non Perl-style name "jsonToObj" and "objToJson" are obsoleted (but |  | 
| 1364         not yet deleted from the source). If you use these functions in your |  | 
| 1365         code, please replace them with "from_json" and "to_json". |  | 
| 1366 |  | 
| 1367     Global variables are no longer available. |  | 
| 1368         "JSON" class variables - $JSON::AUTOCONVERT, $JSON::BareKey, etc... |  | 
| 1369         - are not available any longer. Instead, various features can be |  | 
| 1370         used through object methods. |  | 
| 1371 |  | 
| 1372     Package JSON::Converter and JSON::Parser are deleted. |  | 
| 1373         Now "JSON" bundles with JSON::PP which can handle JSON more properly |  | 
| 1374         than them. |  | 
| 1375 |  | 
| 1376     Package JSON::NotString is deleted. |  | 
| 1377         There was "JSON::NotString" class which represents JSON value |  | 
| 1378         "true", "false", "null" and numbers. It was deleted and replaced by |  | 
| 1379         "JSON::Boolean". |  | 
| 1380 |  | 
| 1381         "JSON::Boolean" represents "true" and "false". |  | 
| 1382 |  | 
| 1383         "JSON::Boolean" does not represent "null". |  | 
| 1384 |  | 
| 1385         "JSON::null" returns "undef". |  | 
| 1386 |  | 
| 1387         "JSON" makes JSON::XS::Boolean and JSON::PP::Boolean is-a relation |  | 
| 1388         to JSON::Boolean. |  | 
| 1389 |  | 
| 1390     function JSON::Number is obsoleted. |  | 
| 1391         "JSON::Number" is now needless because JSON::XS and JSON::PP have |  | 
| 1392         round-trip integrity. |  | 
| 1393 |  | 
| 1394     JSONRPC modules are deleted. |  | 
| 1395         Perl implementation of JSON-RPC protocol - "JSONRPC ", |  | 
| 1396         "JSONRPC::Transport::HTTP" and "Apache::JSONRPC " are deleted in |  | 
| 1397         this distribution. Instead of them, there is JSON::RPC which |  | 
| 1398         supports JSON-RPC protocol version 1.1. |  | 
| 1399 |  | 
| 1400   Transition ways from 1.xx to 2.xx. |  | 
| 1401     You should set "suport_by_pp" mode firstly, because it is always |  | 
| 1402     successful for the below codes even with JSON::XS. |  | 
| 1403 |  | 
| 1404         use JSON -support_by_pp; |  | 
| 1405 |  | 
| 1406     Exported jsonToObj (simple) |  | 
| 1407           from_json($json_text); |  | 
| 1408 |  | 
| 1409     Exported objToJson (simple) |  | 
| 1410           to_json($perl_scalar); |  | 
| 1411 |  | 
| 1412     Exported jsonToObj (advanced) |  | 
| 1413           $flags = {allow_barekey => 1, allow_singlequote => 1}; |  | 
| 1414           from_json($json_text, $flags); |  | 
| 1415 |  | 
| 1416         equivalent to: |  | 
| 1417 |  | 
| 1418           $JSON::BareKey = 1; |  | 
| 1419           $JSON::QuotApos = 1; |  | 
| 1420           jsonToObj($json_text); |  | 
| 1421 |  | 
| 1422     Exported objToJson (advanced) |  | 
| 1423           $flags = {allow_blessed => 1, allow_barekey => 1}; |  | 
| 1424           to_json($perl_scalar, $flags); |  | 
| 1425 |  | 
| 1426         equivalent to: |  | 
| 1427 |  | 
| 1428           $JSON::BareKey = 1; |  | 
| 1429           objToJson($perl_scalar); |  | 
| 1430 |  | 
| 1431     jsonToObj as object method |  | 
| 1432           $json->decode($json_text); |  | 
| 1433 |  | 
| 1434     objToJson as object method |  | 
| 1435           $json->encode($perl_scalar); |  | 
| 1436 |  | 
| 1437     new method with parameters |  | 
| 1438         The "new" method in 2.x takes any parameters no longer. You can set |  | 
| 1439         parameters instead; |  | 
| 1440 |  | 
| 1441            $json = JSON->new->pretty; |  | 
| 1442 |  | 
| 1443     $JSON::Pretty, $JSON::Indent, $JSON::Delimiter |  | 
| 1444         If "indent" is enable, that means $JSON::Pretty flag set. And |  | 
| 1445         $JSON::Delimiter was substituted by "space_before" and |  | 
| 1446         "space_after". In conclusion: |  | 
| 1447 |  | 
| 1448            $json->indent->space_before->space_after; |  | 
| 1449 |  | 
| 1450         Equivalent to: |  | 
| 1451 |  | 
| 1452           $json->pretty; |  | 
| 1453 |  | 
| 1454         To change indent length, use "indent_length". |  | 
| 1455 |  | 
| 1456         (Only with JSON::PP, if "-support_by_pp" is not used.) |  | 
| 1457 |  | 
| 1458           $json->pretty->indent_length(2)->encode($perl_scalar); |  | 
| 1459 |  | 
| 1460     $JSON::BareKey |  | 
| 1461         (Only with JSON::PP, if "-support_by_pp" is not used.) |  | 
| 1462 |  | 
| 1463           $json->allow_barekey->decode($json_text) |  | 
| 1464 |  | 
| 1465     $JSON::ConvBlessed |  | 
| 1466         use "-convert_blessed_universally". See to convert_blessed. |  | 
| 1467 |  | 
| 1468     $JSON::QuotApos |  | 
| 1469         (Only with JSON::PP, if "-support_by_pp" is not used.) |  | 
| 1470 |  | 
| 1471           $json->allow_singlequote->decode($json_text) |  | 
| 1472 |  | 
| 1473     $JSON::SingleQuote |  | 
| 1474         Disable. "JSON" does not make such a invalid JSON string any longer. |  | 
| 1475 |  | 
| 1476     $JSON::KeySort |  | 
| 1477           $json->canonical->encode($perl_scalar) |  | 
| 1478 |  | 
| 1479         This is the ascii sort. |  | 
| 1480 |  | 
| 1481         If you want to use with your own sort routine, check the "sort_by" |  | 
| 1482         method. |  | 
| 1483 |  | 
| 1484         (Only with JSON::PP, even if "-support_by_pp" is used currently.) |  | 
| 1485 |  | 
| 1486           $json->sort_by($sort_routine_ref)->encode($perl_scalar) |  | 
| 1487 |  | 
| 1488           $json->sort_by(sub { $JSON::PP::a <=> $JSON::PP::b })->encode($perl_sc
      alar) |  | 
| 1489 |  | 
| 1490         Can't access $a and $b but $JSON::PP::a and $JSON::PP::b. |  | 
| 1491 |  | 
| 1492     $JSON::SkipInvalid |  | 
| 1493           $json->allow_unknown |  | 
| 1494 |  | 
| 1495     $JSON::AUTOCONVERT |  | 
| 1496         Needless. "JSON" backend modules have the round-trip integrity. |  | 
| 1497 |  | 
| 1498     $JSON::UTF8 |  | 
| 1499         Needless because "JSON" (JSON::XS/JSON::PP) sets the UTF8 flag on |  | 
| 1500         properly. |  | 
| 1501 |  | 
| 1502             # With UTF8-flagged strings |  | 
| 1503 |  | 
| 1504             $json->allow_nonref; |  | 
| 1505             $str = chr(1000); # UTF8-flagged |  | 
| 1506 |  | 
| 1507             $json_text  = $json->utf8(0)->encode($str); |  | 
| 1508             utf8::is_utf8($json_text); |  | 
| 1509             # true |  | 
| 1510             $json_text  = $json->utf8(1)->encode($str); |  | 
| 1511             utf8::is_utf8($json_text); |  | 
| 1512             # false |  | 
| 1513 |  | 
| 1514             $str = '"' . chr(1000) . '"'; # UTF8-flagged |  | 
| 1515 |  | 
| 1516             $perl_scalar  = $json->utf8(0)->decode($str); |  | 
| 1517             utf8::is_utf8($perl_scalar); |  | 
| 1518             # true |  | 
| 1519             $perl_scalar  = $json->utf8(1)->decode($str); |  | 
| 1520             # died because of 'Wide character in subroutine' |  | 
| 1521 |  | 
| 1522         See to "A FEW NOTES ON UNICODE AND PERL" in JSON::XS. |  | 
| 1523 |  | 
| 1524     $JSON::UnMapping |  | 
| 1525         Disable. See to MAPPING. |  | 
| 1526 |  | 
| 1527     $JSON::SelfConvert |  | 
| 1528         This option was deleted. Instead of it, if a given blessed object |  | 
| 1529         has the "TO_JSON" method, "TO_JSON" will be executed with |  | 
| 1530         "convert_blessed". |  | 
| 1531 |  | 
| 1532           $json->convert_blessed->encode($blessed_hashref_or_arrayref) |  | 
| 1533           # if need, call allow_blessed |  | 
| 1534 |  | 
| 1535         Note that it was "toJson" in old version, but now not "toJson" but |  | 
| 1536         "TO_JSON". |  | 
| 1537 |  | 
| 1538 TODO |  | 
| 1539     example programs |  | 
| 1540 |  | 
| 1541 THREADS |  | 
| 1542     No test with JSON::PP. If with JSON::XS, See to "THREADS" in JSON::XS. |  | 
| 1543 |  | 
| 1544 BUGS |  | 
| 1545     Please report bugs relevant to "JSON" to <makamaka[at]cpan.org>. |  | 
| 1546 |  | 
| 1547 SEE ALSO |  | 
| 1548     Most of the document is copied and modified from JSON::XS doc. |  | 
| 1549 |  | 
| 1550     JSON::XS, JSON::PP |  | 
| 1551 |  | 
| 1552     "RFC4627"(<http://www.ietf.org/rfc/rfc4627.txt>) |  | 
| 1553 |  | 
| 1554 AUTHOR |  | 
| 1555     Makamaka Hannyaharamitu, <makamaka[at]cpan.org> |  | 
| 1556 |  | 
| 1557     JSON::XS was written by Marc Lehmann <schmorp[at]schmorp.de> |  | 
| 1558 |  | 
| 1559     The release of this new version owes to the courtesy of Marc Lehmann. |  | 
| 1560 |  | 
| 1561 COPYRIGHT AND LICENSE |  | 
| 1562     Copyright 2005-2013 by Makamaka Hannyaharamitu |  | 
| 1563 |  | 
| 1564     This library is free software; you can redistribute it and/or modify it |  | 
| 1565     under the same terms as Perl itself. |  | 
| 1566 |  | 
| OLD | NEW | 
|---|