| 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 | 
|---|