Home | History | Annotate | only in /external/chromium_org/third_party/JSON/JSON-2.59
Up to higher level directory
NameDateSize
blib/20-Jun-2014
Changes20-Jun-201412.1K
eg/20-Jun-2014
lib/20-Jun-2014
Makefile20-Jun-201423.6K
Makefile.PL20-Jun-20142.1K
MANIFEST20-Jun-20141.3K
META.json20-Jun-20141.1K
META.yml20-Jun-2014611
MYMETA.yml20-Jun-2014600
pm_to_blib20-Jun-20140
README20-Jun-201456.8K
t/20-Jun-2014

README

      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_scalar)
   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 
   1567