- add sources.
[platform/framework/web/crosswalk.git] / src / third_party / JSON / JSON-2.59 / lib / JSON.pm
1 package JSON;
2
3
4 use strict;
5 use Carp ();
6 use base qw(Exporter);
7 @JSON::EXPORT = qw(from_json to_json jsonToObj objToJson encode_json decode_json);
8
9 BEGIN {
10     $JSON::VERSION = '2.59';
11     $JSON::DEBUG   = 0 unless (defined $JSON::DEBUG);
12     $JSON::DEBUG   = $ENV{ PERL_JSON_DEBUG } if exists $ENV{ PERL_JSON_DEBUG };
13 }
14
15 my $Module_XS  = 'JSON::XS';
16 my $Module_PP  = 'JSON::PP';
17 my $Module_bp  = 'JSON::backportPP'; # included in JSON distribution
18 my $PP_Version = '2.27200';
19 my $XS_Version = '2.34';
20
21
22 # XS and PP common methods
23
24 my @PublicMethods = qw/
25     ascii latin1 utf8 pretty indent space_before space_after relaxed canonical allow_nonref 
26     allow_blessed convert_blessed filter_json_object filter_json_single_key_object 
27     shrink max_depth max_size encode decode decode_prefix allow_unknown
28 /;
29
30 my @Properties = qw/
31     ascii latin1 utf8 indent space_before space_after relaxed canonical allow_nonref
32     allow_blessed convert_blessed shrink max_depth max_size allow_unknown
33 /;
34
35 my @XSOnlyMethods = qw//; # Currently nothing
36
37 my @PPOnlyMethods = qw/
38     indent_length sort_by
39     allow_singlequote allow_bignum loose allow_barekey escape_slash as_nonblessed
40 /; # JSON::PP specific
41
42
43 # used in _load_xs and _load_pp ($INSTALL_ONLY is not used currently)
44 my $_INSTALL_DONT_DIE  = 1; # When _load_xs fails to load XS, don't die.
45 my $_INSTALL_ONLY      = 2; # Don't call _set_methods()
46 my $_ALLOW_UNSUPPORTED = 0;
47 my $_UNIV_CONV_BLESSED = 0;
48 my $_USSING_bpPP       = 0;
49
50
51 # Check the environment variable to decide worker module. 
52
53 unless ($JSON::Backend) {
54     $JSON::DEBUG and  Carp::carp("Check used worker module...");
55
56     my $backend = exists $ENV{PERL_JSON_BACKEND} ? $ENV{PERL_JSON_BACKEND} : 1;
57
58     if ($backend eq '1' or $backend =~ /JSON::XS\s*,\s*JSON::PP/) {
59         _load_xs($_INSTALL_DONT_DIE) or _load_pp();
60     }
61     elsif ($backend eq '0' or $backend eq 'JSON::PP') {
62         _load_pp();
63     }
64     elsif ($backend eq '2' or $backend eq 'JSON::XS') {
65         _load_xs();
66     }
67     elsif ($backend eq 'JSON::backportPP') {
68         $_USSING_bpPP = 1;
69         _load_pp();
70     }
71     else {
72         Carp::croak "The value of environmental variable 'PERL_JSON_BACKEND' is invalid.";
73     }
74 }
75
76
77 sub import {
78     my $pkg = shift;
79     my @what_to_export;
80     my $no_export;
81
82     for my $tag (@_) {
83         if ($tag eq '-support_by_pp') {
84             if (!$_ALLOW_UNSUPPORTED++) {
85                 JSON::Backend::XS
86                     ->support_by_pp(@PPOnlyMethods) if ($JSON::Backend eq $Module_XS);
87             }
88             next;
89         }
90         elsif ($tag eq '-no_export') {
91             $no_export++, next;
92         }
93         elsif ( $tag eq '-convert_blessed_universally' ) {
94             eval q|
95                 require B;
96                 *UNIVERSAL::TO_JSON = sub {
97                     my $b_obj = B::svref_2object( $_[0] );
98                     return    $b_obj->isa('B::HV') ? { %{ $_[0] } }
99                             : $b_obj->isa('B::AV') ? [ @{ $_[0] } ]
100                             : undef
101                             ;
102                 }
103             | if ( !$_UNIV_CONV_BLESSED++ );
104             next;
105         }
106         push @what_to_export, $tag;
107     }
108
109     return if ($no_export);
110
111     __PACKAGE__->export_to_level(1, $pkg, @what_to_export);
112 }
113
114
115 # OBSOLETED
116
117 sub jsonToObj {
118     my $alternative = 'from_json';
119     if (defined $_[0] and UNIVERSAL::isa($_[0], 'JSON')) {
120         shift @_; $alternative = 'decode';
121     }
122     Carp::carp "'jsonToObj' will be obsoleted. Please use '$alternative' instead.";
123     return JSON::from_json(@_);
124 };
125
126 sub objToJson {
127     my $alternative = 'to_json';
128     if (defined $_[0] and UNIVERSAL::isa($_[0], 'JSON')) {
129         shift @_; $alternative = 'encode';
130     }
131     Carp::carp "'objToJson' will be obsoleted. Please use '$alternative' instead.";
132     JSON::to_json(@_);
133 };
134
135
136 # INTERFACES
137
138 sub to_json ($@) {
139     if (
140         ref($_[0]) eq 'JSON'
141         or (@_ > 2 and $_[0] eq 'JSON')
142     ) {
143         Carp::croak "to_json should not be called as a method.";
144     }
145     my $json = JSON->new;
146
147     if (@_ == 2 and ref $_[1] eq 'HASH') {
148         my $opt  = $_[1];
149         for my $method (keys %$opt) {
150             $json->$method( $opt->{$method} );
151         }
152     }
153
154     $json->encode($_[0]);
155 }
156
157
158 sub from_json ($@) {
159     if ( ref($_[0]) eq 'JSON' or $_[0] eq 'JSON' ) {
160         Carp::croak "from_json should not be called as a method.";
161     }
162     my $json = JSON->new;
163
164     if (@_ == 2 and ref $_[1] eq 'HASH') {
165         my $opt  = $_[1];
166         for my $method (keys %$opt) {
167             $json->$method( $opt->{$method} );
168         }
169     }
170
171     return $json->decode( $_[0] );
172 }
173
174
175 sub true  { $JSON::true  }
176
177 sub false { $JSON::false }
178
179 sub null  { undef; }
180
181
182 sub require_xs_version { $XS_Version; }
183
184 sub backend {
185     my $proto = shift;
186     $JSON::Backend;
187 }
188
189 #*module = *backend;
190
191
192 sub is_xs {
193     return $_[0]->module eq $Module_XS;
194 }
195
196
197 sub is_pp {
198     return not $_[0]->xs;
199 }
200
201
202 sub pureperl_only_methods { @PPOnlyMethods; }
203
204
205 sub property {
206     my ($self, $name, $value) = @_;
207
208     if (@_ == 1) {
209         my %props;
210         for $name (@Properties) {
211             my $method = 'get_' . $name;
212             if ($name eq 'max_size') {
213                 my $value = $self->$method();
214                 $props{$name} = $value == 1 ? 0 : $value;
215                 next;
216             }
217             $props{$name} = $self->$method();
218         }
219         return \%props;
220     }
221     elsif (@_ > 3) {
222         Carp::croak('property() can take only the option within 2 arguments.');
223     }
224     elsif (@_ == 2) {
225         if ( my $method = $self->can('get_' . $name) ) {
226             if ($name eq 'max_size') {
227                 my $value = $self->$method();
228                 return $value == 1 ? 0 : $value;
229             }
230             $self->$method();
231         }
232     }
233     else {
234         $self->$name($value);
235     }
236
237 }
238
239
240
241 # INTERNAL
242
243 sub _load_xs {
244     my $opt = shift;
245
246     $JSON::DEBUG and Carp::carp "Load $Module_XS.";
247
248     # if called after install module, overload is disable.... why?
249     JSON::Boolean::_overrride_overload($Module_XS);
250     JSON::Boolean::_overrride_overload($Module_PP);
251
252     eval qq|
253         use $Module_XS $XS_Version ();
254     |;
255
256     if ($@) {
257         if (defined $opt and $opt & $_INSTALL_DONT_DIE) {
258             $JSON::DEBUG and Carp::carp "Can't load $Module_XS...($@)";
259             return 0;
260         }
261         Carp::croak $@;
262     }
263
264     unless (defined $opt and $opt & $_INSTALL_ONLY) {
265         _set_module( $JSON::Backend = $Module_XS );
266         my $data = join("", <DATA>); # this code is from Jcode 2.xx.
267         close(DATA);
268         eval $data;
269         JSON::Backend::XS->init;
270     }
271
272     return 1;
273 };
274
275
276 sub _load_pp {
277     my $opt = shift;
278     my $backend = $_USSING_bpPP ? $Module_bp : $Module_PP;
279
280     $JSON::DEBUG and Carp::carp "Load $backend.";
281
282     # if called after install module, overload is disable.... why?
283     JSON::Boolean::_overrride_overload($Module_XS);
284     JSON::Boolean::_overrride_overload($backend);
285
286     if ( $_USSING_bpPP ) {
287         eval qq| require $backend |;
288     }
289     else {
290         eval qq| use $backend $PP_Version () |;
291     }
292
293     if ($@) {
294         if ( $backend eq $Module_PP ) {
295             $JSON::DEBUG and Carp::carp "Can't load $Module_PP ($@), so try to load $Module_bp";
296             $_USSING_bpPP++;
297             $backend = $Module_bp;
298             JSON::Boolean::_overrride_overload($backend);
299             local $^W; # if PP installed but invalid version, backportPP redefines methods.
300             eval qq| require $Module_bp |;
301         }
302         Carp::croak $@ if $@;
303     }
304
305     unless (defined $opt and $opt & $_INSTALL_ONLY) {
306         _set_module( $JSON::Backend = $Module_PP ); # even if backportPP, set $Backend with 'JSON::PP'
307         JSON::Backend::PP->init;
308     }
309 };
310
311
312 sub _set_module {
313     return if defined $JSON::true;
314
315     my $module = shift;
316
317     local $^W;
318     no strict qw(refs);
319
320     $JSON::true  = ${"$module\::true"};
321     $JSON::false = ${"$module\::false"};
322
323     push @JSON::ISA, $module;
324     push @{"$module\::Boolean::ISA"}, qw(JSON::Boolean);
325
326     *{"JSON::is_bool"} = \&{"$module\::is_bool"};
327
328     for my $method ($module eq $Module_XS ? @PPOnlyMethods : @XSOnlyMethods) {
329         *{"JSON::$method"} = sub {
330             Carp::carp("$method is not supported in $module.");
331             $_[0];
332         };
333     }
334
335     return 1;
336 }
337
338
339
340 #
341 # JSON Boolean
342 #
343
344 package JSON::Boolean;
345
346 my %Installed;
347
348 sub _overrride_overload {
349     return if ($Installed{ $_[0] }++);
350
351     my $boolean = $_[0] . '::Boolean';
352
353     eval sprintf(q|
354         package %s;
355         use overload (
356             '""' => sub { ${$_[0]} == 1 ? 'true' : 'false' },
357             'eq' => sub {
358                 my ($obj, $op) = ref ($_[0]) ? ($_[0], $_[1]) : ($_[1], $_[0]);
359                 if ($op eq 'true' or $op eq 'false') {
360                     return "$obj" eq 'true' ? 'true' eq $op : 'false' eq $op;
361                 }
362                 else {
363                     return $obj ? 1 == $op : 0 == $op;
364                 }
365             },
366         );
367     |, $boolean);
368
369     if ($@) { Carp::croak $@; }
370
371     if ( exists $INC{'JSON/XS.pm'} and $boolean eq 'JSON::XS::Boolean' ) {
372         local $^W;
373         my $true  = do { bless \(my $dummy = 1), $boolean };
374         my $false = do { bless \(my $dummy = 0), $boolean };
375         *JSON::XS::true  = sub () { $true };
376         *JSON::XS::false = sub () { $false };
377     }
378     elsif ( exists $INC{'JSON/PP.pm'} and $boolean eq 'JSON::PP::Boolean' ) {
379         local $^W;
380         my $true  = do { bless \(my $dummy = 1), $boolean };
381         my $false = do { bless \(my $dummy = 0), $boolean };
382         *JSON::PP::true  = sub { $true };
383         *JSON::PP::false = sub { $false };
384     }
385
386     return 1;
387 }
388
389
390 #
391 # Helper classes for Backend Module (PP)
392 #
393
394 package JSON::Backend::PP;
395
396 sub init {
397     local $^W;
398     no strict qw(refs); # this routine may be called after JSON::Backend::XS init was called.
399     *{"JSON::decode_json"} = \&{"JSON::PP::decode_json"};
400     *{"JSON::encode_json"} = \&{"JSON::PP::encode_json"};
401     *{"JSON::PP::is_xs"}  = sub { 0 };
402     *{"JSON::PP::is_pp"}  = sub { 1 };
403     return 1;
404 }
405
406 #
407 # To save memory, the below lines are read only when XS backend is used.
408 #
409
410 package JSON;
411
412 1;
413 __DATA__
414
415
416 #
417 # Helper classes for Backend Module (XS)
418 #
419
420 package JSON::Backend::XS;
421
422 use constant INDENT_LENGTH_FLAG => 15 << 12;
423
424 use constant UNSUPPORTED_ENCODE_FLAG => {
425     ESCAPE_SLASH      => 0x00000010,
426     ALLOW_BIGNUM      => 0x00000020,
427     AS_NONBLESSED     => 0x00000040,
428     EXPANDED          => 0x10000000, # for developer's
429 };
430
431 use constant UNSUPPORTED_DECODE_FLAG => {
432     LOOSE             => 0x00000001,
433     ALLOW_BIGNUM      => 0x00000002,
434     ALLOW_BAREKEY     => 0x00000004,
435     ALLOW_SINGLEQUOTE => 0x00000008,
436     EXPANDED          => 0x20000000, # for developer's
437 };
438
439
440 sub init {
441     local $^W;
442     no strict qw(refs);
443     *{"JSON::decode_json"} = \&{"JSON::XS::decode_json"};
444     *{"JSON::encode_json"} = \&{"JSON::XS::encode_json"};
445     *{"JSON::XS::is_xs"}  = sub { 1 };
446     *{"JSON::XS::is_pp"}  = sub { 0 };
447     return 1;
448 }
449
450
451 sub support_by_pp {
452     my ($class, @methods) = @_;
453
454     local $^W;
455     no strict qw(refs);
456
457     my $JSON_XS_encode_orignal     = \&JSON::XS::encode;
458     my $JSON_XS_decode_orignal     = \&JSON::XS::decode;
459     my $JSON_XS_incr_parse_orignal = \&JSON::XS::incr_parse;
460
461     *JSON::XS::decode     = \&JSON::Backend::XS::Supportable::_decode;
462     *JSON::XS::encode     = \&JSON::Backend::XS::Supportable::_encode;
463     *JSON::XS::incr_parse = \&JSON::Backend::XS::Supportable::_incr_parse;
464
465     *{JSON::XS::_original_decode}     = $JSON_XS_decode_orignal;
466     *{JSON::XS::_original_encode}     = $JSON_XS_encode_orignal;
467     *{JSON::XS::_original_incr_parse} = $JSON_XS_incr_parse_orignal;
468
469     push @JSON::Backend::XS::Supportable::ISA, 'JSON';
470
471     my $pkg = 'JSON::Backend::XS::Supportable';
472
473     *{JSON::new} = sub {
474         my $proto = JSON::XS->new; $$proto = 0;
475         bless  $proto, $pkg;
476     };
477
478
479     for my $method (@methods) {
480         my $flag = uc($method);
481         my $type |= (UNSUPPORTED_ENCODE_FLAG->{$flag} || 0);
482            $type |= (UNSUPPORTED_DECODE_FLAG->{$flag} || 0);
483
484         next unless($type);
485
486         $pkg->_make_unsupported_method($method => $type);
487     }
488
489     push @{"JSON::XS::Boolean::ISA"}, qw(JSON::PP::Boolean);
490     push @{"JSON::PP::Boolean::ISA"}, qw(JSON::Boolean);
491
492     $JSON::DEBUG and Carp::carp("set -support_by_pp mode.");
493
494     return 1;
495 }
496
497
498
499
500 #
501 # Helper classes for XS
502 #
503
504 package JSON::Backend::XS::Supportable;
505
506 $Carp::Internal{'JSON::Backend::XS::Supportable'} = 1;
507
508 sub _make_unsupported_method {
509     my ($pkg, $method, $type) = @_;
510
511     local $^W;
512     no strict qw(refs);
513
514     *{"$pkg\::$method"} = sub {
515         local $^W;
516         if (defined $_[1] ? $_[1] : 1) {
517             ${$_[0]} |= $type;
518         }
519         else {
520             ${$_[0]} &= ~$type;
521         }
522         $_[0];
523     };
524
525     *{"$pkg\::get_$method"} = sub {
526         ${$_[0]} & $type ? 1 : '';
527     };
528
529 }
530
531
532 sub _set_for_pp {
533     JSON::_load_pp( $_INSTALL_ONLY );
534
535     my $type  = shift;
536     my $pp    = JSON::PP->new;
537     my $prop = $_[0]->property;
538
539     for my $name (keys %$prop) {
540         $pp->$name( $prop->{$name} ? $prop->{$name} : 0 );
541     }
542
543     my $unsupported = $type eq 'encode' ? JSON::Backend::XS::UNSUPPORTED_ENCODE_FLAG
544                                         : JSON::Backend::XS::UNSUPPORTED_DECODE_FLAG;
545     my $flags       = ${$_[0]} || 0;
546
547     for my $name (keys %$unsupported) {
548         next if ($name eq 'EXPANDED'); # for developer's
549         my $enable = ($flags & $unsupported->{$name}) ? 1 : 0;
550         my $method = lc $name;
551         $pp->$method($enable);
552     }
553
554     $pp->indent_length( $_[0]->get_indent_length );
555
556     return $pp;
557 }
558
559 sub _encode { # using with PP encode
560     if (${$_[0]}) {
561         _set_for_pp('encode' => @_)->encode($_[1]);
562     }
563     else {
564         $_[0]->_original_encode( $_[1] );
565     }
566 }
567
568
569 sub _decode { # if unsupported-flag is set, use PP
570     if (${$_[0]}) {
571         _set_for_pp('decode' => @_)->decode($_[1]);
572     }
573     else {
574         $_[0]->_original_decode( $_[1] );
575     }
576 }
577
578
579 sub decode_prefix { # if unsupported-flag is set, use PP
580     _set_for_pp('decode' => @_)->decode_prefix($_[1]);
581 }
582
583
584 sub _incr_parse {
585     if (${$_[0]}) {
586         _set_for_pp('decode' => @_)->incr_parse($_[1]);
587     }
588     else {
589         $_[0]->_original_incr_parse( $_[1] );
590     }
591 }
592
593
594 sub get_indent_length {
595     ${$_[0]} << 4 >> 16;
596 }
597
598
599 sub indent_length {
600     my $length = $_[1];
601
602     if (!defined $length or $length > 15 or $length < 0) {
603         Carp::carp "The acceptable range of indent_length() is 0 to 15.";
604     }
605     else {
606         local $^W;
607         $length <<= 12;
608         ${$_[0]} &= ~ JSON::Backend::XS::INDENT_LENGTH_FLAG;
609         ${$_[0]} |= $length;
610         *JSON::XS::encode = \&JSON::Backend::XS::Supportable::_encode;
611     }
612
613     $_[0];
614 }
615
616
617 1;
618 __END__
619
620 =head1 NAME
621
622 JSON - JSON (JavaScript Object Notation) encoder/decoder
623
624 =head1 SYNOPSIS
625
626  use JSON; # imports encode_json, decode_json, to_json and from_json.
627  
628  # simple and fast interfaces (expect/generate UTF-8)
629  
630  $utf8_encoded_json_text = encode_json $perl_hash_or_arrayref;
631  $perl_hash_or_arrayref  = decode_json $utf8_encoded_json_text;
632  
633  # OO-interface
634  
635  $json = JSON->new->allow_nonref;
636  
637  $json_text   = $json->encode( $perl_scalar );
638  $perl_scalar = $json->decode( $json_text );
639  
640  $pretty_printed = $json->pretty->encode( $perl_scalar ); # pretty-printing
641  
642  # If you want to use PP only support features, call with '-support_by_pp'
643  # When XS unsupported feature is enable, using PP (de|en)code instead of XS ones.
644  
645  use JSON -support_by_pp;
646  
647  # option-acceptable interfaces (expect/generate UNICODE by default)
648  
649  $json_text   = to_json( $perl_scalar, { ascii => 1, pretty => 1 } );
650  $perl_scalar = from_json( $json_text, { utf8  => 1 } );
651  
652  # Between (en|de)code_json and (to|from)_json, if you want to write
653  # a code which communicates to an outer world (encoded in UTF-8),
654  # recommend to use (en|de)code_json.
655  
656 =head1 VERSION
657
658     2.59
659
660 This version is compatible with JSON::XS B<2.34> and later.
661
662
663 =head1 NOTE
664
665 JSON::PP was earlier included in the C<JSON> distribution, but
666 has since Perl 5.14 been a core module. For this reason,
667 L<JSON::PP> was removed from the JSON distribution and can now
668 be found also in the Perl5 repository at
669
670 =over
671
672 =item * L<http://perl5.git.perl.org/perl.git>
673
674 =back
675
676 (The newest JSON::PP version still exists in CPAN.)
677
678 Instead, the C<JSON> distribution will include JSON::backportPP
679 for backwards computability. JSON.pm should thus work as it did
680 before.
681
682 =head1 DESCRIPTION
683
684  ************************** CAUTION ********************************
685  * This is 'JSON module version 2' and there are many differences  *
686  * to version 1.xx                                                 *
687  * Please check your applications using old version.              *
688  *   See to 'INCOMPATIBLE CHANGES TO OLD VERSION'                  *
689  *******************************************************************
690
691 JSON (JavaScript Object Notation) is a simple data format.
692 See to L<http://www.json.org/> and C<RFC4627>(L<http://www.ietf.org/rfc/rfc4627.txt>).
693
694 This module converts Perl data structures to JSON and vice versa using either
695 L<JSON::XS> or L<JSON::PP>.
696
697 JSON::XS is the fastest and most proper JSON module on CPAN which must be
698 compiled and installed in your environment.
699 JSON::PP is a pure-Perl module which is bundled in this distribution and
700 has a strong compatibility to JSON::XS.
701
702 This module try to use JSON::XS by default and fail to it, use JSON::PP instead.
703 So its features completely depend on JSON::XS or JSON::PP.
704
705 See to L<BACKEND MODULE DECISION>.
706
707 To distinguish the module name 'JSON' and the format type JSON,
708 the former is quoted by CE<lt>E<gt> (its results vary with your using media),
709 and the latter is left just as it is.
710
711 Module name : C<JSON>
712
713 Format type : JSON
714
715 =head2 FEATURES
716
717 =over
718
719 =item * correct unicode handling
720
721 This module (i.e. backend modules) knows how to handle Unicode, documents
722 how and when it does so, and even documents what "correct" means.
723
724 Even though there are limitations, this feature is available since Perl version 5.6.
725
726 JSON::XS requires Perl 5.8.2 (but works correctly in 5.8.8 or later), so in older versions
727 C<JSON> should call JSON::PP as the backend which can be used since Perl 5.005.
728
729 With Perl 5.8.x JSON::PP works, but from 5.8.0 to 5.8.2, because of a Perl side problem,
730 JSON::PP works slower in the versions. And in 5.005, the Unicode handling is not available.
731 See to L<JSON::PP/UNICODE HANDLING ON PERLS> for more information.
732
733 See also to L<JSON::XS/A FEW NOTES ON UNICODE AND PERL>
734 and L<JSON::XS/ENCODING/CODESET_FLAG_NOTES>.
735
736
737 =item * round-trip integrity
738
739 When you serialise a perl data structure using only data types supported
740 by JSON and Perl, the deserialised data structure is identical on the Perl
741 level. (e.g. the string "2.0" doesn't suddenly become "2" just because
742 it looks like a number). There I<are> minor exceptions to this, read the
743 L</MAPPING> section below to learn about those.
744
745
746 =item * strict checking of JSON correctness
747
748 There is no guessing, no generating of illegal JSON texts by default,
749 and only JSON is accepted as input by default (the latter is a security
750 feature).
751
752 See to L<JSON::XS/FEATURES> and L<JSON::PP/FEATURES>.
753
754 =item * fast
755
756 This module returns a JSON::XS object itself if available.
757 Compared to other JSON modules and other serialisers such as Storable,
758 JSON::XS usually compares favorably in terms of speed, too.
759
760 If not available, C<JSON> returns a JSON::PP object instead of JSON::XS and
761 it is very slow as pure-Perl.
762
763 =item * simple to use
764
765 This module has both a simple functional interface as well as an
766 object oriented interface interface.
767
768 =item * reasonably versatile output formats
769
770 You can choose between the most compact guaranteed-single-line format possible
771 (nice for simple line-based protocols), a pure-ASCII format (for when your transport
772 is not 8-bit clean, still supports the whole Unicode range), or a pretty-printed
773 format (for when you want to read that stuff). Or you can combine those features
774 in whatever way you like.
775
776 =back
777
778 =head1 FUNCTIONAL INTERFACE
779
780 Some documents are copied and modified from L<JSON::XS/FUNCTIONAL INTERFACE>.
781 C<to_json> and C<from_json> are additional functions.
782
783 =head2 encode_json
784
785     $json_text = encode_json $perl_scalar
786
787 Converts the given Perl data structure to a UTF-8 encoded, binary string.
788
789 This function call is functionally identical to:
790
791     $json_text = JSON->new->utf8->encode($perl_scalar)
792
793 =head2 decode_json
794
795     $perl_scalar = decode_json $json_text
796
797 The opposite of C<encode_json>: expects an UTF-8 (binary) string and tries
798 to parse that as an UTF-8 encoded JSON text, returning the resulting
799 reference.
800
801 This function call is functionally identical to:
802
803     $perl_scalar = JSON->new->utf8->decode($json_text)
804
805
806 =head2 to_json
807
808    $json_text = to_json($perl_scalar)
809
810 Converts the given Perl data structure to a json string.
811
812 This function call is functionally identical to:
813
814    $json_text = JSON->new->encode($perl_scalar)
815
816 Takes a hash reference as the second.
817
818    $json_text = to_json($perl_scalar, $flag_hashref)
819
820 So,
821
822    $json_text = to_json($perl_scalar, {utf8 => 1, pretty => 1})
823
824 equivalent to:
825
826    $json_text = JSON->new->utf8(1)->pretty(1)->encode($perl_scalar)
827
828 If you want to write a modern perl code which communicates to outer world,
829 you should use C<encode_json> (supposed that JSON data are encoded in UTF-8).
830
831 =head2 from_json
832
833    $perl_scalar = from_json($json_text)
834
835 The opposite of C<to_json>: expects a json string and tries
836 to parse it, returning the resulting reference.
837
838 This function call is functionally identical to:
839
840     $perl_scalar = JSON->decode($json_text)
841
842 Takes a hash reference as the second.
843
844     $perl_scalar = from_json($json_text, $flag_hashref)
845
846 So,
847
848     $perl_scalar = from_json($json_text, {utf8 => 1})
849
850 equivalent to:
851
852     $perl_scalar = JSON->new->utf8(1)->decode($json_text)
853
854 If you want to write a modern perl code which communicates to outer world,
855 you should use C<decode_json> (supposed that JSON data are encoded in UTF-8).
856
857 =head2 JSON::is_bool
858
859     $is_boolean = JSON::is_bool($scalar)
860
861 Returns true if the passed scalar represents either JSON::true or
862 JSON::false, two constants that act like C<1> and C<0> respectively
863 and are also used to represent JSON C<true> and C<false> in Perl strings.
864
865 =head2 JSON::true
866
867 Returns JSON true value which is blessed object.
868 It C<isa> JSON::Boolean object.
869
870 =head2 JSON::false
871
872 Returns JSON false value which is blessed object.
873 It C<isa> JSON::Boolean object.
874
875 =head2 JSON::null
876
877 Returns C<undef>.
878
879 See L<MAPPING>, below, for more information on how JSON values are mapped to
880 Perl.
881
882 =head1 HOW DO I DECODE A DATA FROM OUTER AND ENCODE TO OUTER
883
884 This section supposes that your perl version is 5.8 or later.
885
886 If you know a JSON text from an outer world - a network, a file content, and so on,
887 is encoded in UTF-8, you should use C<decode_json> or C<JSON> module object
888 with C<utf8> enable. And the decoded result will contain UNICODE characters.
889
890   # from network
891   my $json        = JSON->new->utf8;
892   my $json_text   = CGI->new->param( 'json_data' );
893   my $perl_scalar = $json->decode( $json_text );
894   
895   # from file content
896   local $/;
897   open( my $fh, '<', 'json.data' );
898   $json_text   = <$fh>;
899   $perl_scalar = decode_json( $json_text );
900
901 If an outer data is not encoded in UTF-8, firstly you should C<decode> it.
902
903   use Encode;
904   local $/;
905   open( my $fh, '<', 'json.data' );
906   my $encoding = 'cp932';
907   my $unicode_json_text = decode( $encoding, <$fh> ); # UNICODE
908   
909   # or you can write the below code.
910   #
911   # open( my $fh, "<:encoding($encoding)", 'json.data' );
912   # $unicode_json_text = <$fh>;
913
914 In this case, C<$unicode_json_text> is of course UNICODE string.
915 So you B<cannot> use C<decode_json> nor C<JSON> module object with C<utf8> enable.
916 Instead of them, you use C<JSON> module object with C<utf8> disable or C<from_json>.
917
918   $perl_scalar = $json->utf8(0)->decode( $unicode_json_text );
919   # or
920   $perl_scalar = from_json( $unicode_json_text );
921
922 Or C<encode 'utf8'> and C<decode_json>:
923
924   $perl_scalar = decode_json( encode( 'utf8', $unicode_json_text ) );
925   # this way is not efficient.
926
927 And now, you want to convert your C<$perl_scalar> into JSON data and
928 send it to an outer world - a network or a file content, and so on.
929
930 Your data usually contains UNICODE strings and you want the converted data to be encoded
931 in UTF-8, you should use C<encode_json> or C<JSON> module object with C<utf8> enable.
932
933   print encode_json( $perl_scalar ); # to a network? file? or display?
934   # or
935   print $json->utf8->encode( $perl_scalar );
936
937 If C<$perl_scalar> does not contain UNICODE but C<$encoding>-encoded strings
938 for some reason, then its characters are regarded as B<latin1> for perl
939 (because it does not concern with your $encoding).
940 You B<cannot> use C<encode_json> nor C<JSON> module object with C<utf8> enable.
941 Instead of them, you use C<JSON> module object with C<utf8> disable or C<to_json>.
942 Note that the resulted text is a UNICODE string but no problem to print it.
943
944   # $perl_scalar contains $encoding encoded string values
945   $unicode_json_text = $json->utf8(0)->encode( $perl_scalar );
946   # or 
947   $unicode_json_text = to_json( $perl_scalar );
948   # $unicode_json_text consists of characters less than 0x100
949   print $unicode_json_text;
950
951 Or C<decode $encoding> all string values and C<encode_json>:
952
953   $perl_scalar->{ foo } = decode( $encoding, $perl_scalar->{ foo } );
954   # ... do it to each string values, then encode_json
955   $json_text = encode_json( $perl_scalar );
956
957 This method is a proper way but probably not efficient.
958
959 See to L<Encode>, L<perluniintro>.
960
961
962 =head1 COMMON OBJECT-ORIENTED INTERFACE
963
964 =head2 new
965
966     $json = JSON->new
967
968 Returns a new C<JSON> object inherited from either JSON::XS or JSON::PP
969 that can be used to de/encode JSON strings.
970
971 All boolean flags described below are by default I<disabled>.
972
973 The mutators for flags all return the JSON object again and thus calls can
974 be chained:
975
976    my $json = JSON->new->utf8->space_after->encode({a => [1,2]})
977    => {"a": [1, 2]}
978
979 =head2 ascii
980
981     $json = $json->ascii([$enable])
982     
983     $enabled = $json->get_ascii
984
985 If $enable is true (or missing), then the encode method will not generate characters outside
986 the code range 0..127. Any Unicode characters outside that range will be escaped using either
987 a single \uXXXX or a double \uHHHH\uLLLLL escape sequence, as per RFC4627.
988
989 If $enable is false, then the encode method will not escape Unicode characters unless
990 required by the JSON syntax or other flags. This results in a faster and more compact format.
991
992 This feature depends on the used Perl version and environment.
993
994 See to L<JSON::PP/UNICODE HANDLING ON PERLS> if the backend is PP.
995
996   JSON->new->ascii(1)->encode([chr 0x10401])
997   => ["\ud801\udc01"]
998
999 =head2 latin1
1000
1001     $json = $json->latin1([$enable])
1002     
1003     $enabled = $json->get_latin1
1004
1005 If $enable is true (or missing), then the encode method will encode the resulting JSON
1006 text as latin1 (or iso-8859-1), escaping any characters outside the code range 0..255.
1007
1008 If $enable is false, then the encode method will not escape Unicode characters
1009 unless required by the JSON syntax or other flags.
1010
1011   JSON->new->latin1->encode (["\x{89}\x{abc}"]
1012   => ["\x{89}\\u0abc"]    # (perl syntax, U+abc escaped, U+89 not)
1013
1014 =head2 utf8
1015
1016     $json = $json->utf8([$enable])
1017     
1018     $enabled = $json->get_utf8
1019
1020 If $enable is true (or missing), then the encode method will encode the JSON result
1021 into UTF-8, as required by many protocols, while the decode method expects to be handled
1022 an UTF-8-encoded string. Please note that UTF-8-encoded strings do not contain any
1023 characters outside the range 0..255, they are thus useful for bytewise/binary I/O.
1024
1025 In future versions, enabling this option might enable autodetection of the UTF-16 and UTF-32
1026 encoding families, as described in RFC4627.
1027
1028 If $enable is false, then the encode method will return the JSON string as a (non-encoded)
1029 Unicode string, while decode expects thus a Unicode string. Any decoding or encoding
1030 (e.g. to UTF-8 or UTF-16) needs to be done yourself, e.g. using the Encode module.
1031
1032
1033 Example, output UTF-16BE-encoded JSON:
1034
1035   use Encode;
1036   $jsontext = encode "UTF-16BE", JSON::XS->new->encode ($object);
1037
1038 Example, decode UTF-32LE-encoded JSON:
1039
1040   use Encode;
1041   $object = JSON::XS->new->decode (decode "UTF-32LE", $jsontext);
1042
1043 See to L<JSON::PP/UNICODE HANDLING ON PERLS> if the backend is PP.
1044
1045
1046 =head2 pretty
1047
1048     $json = $json->pretty([$enable])
1049
1050 This enables (or disables) all of the C<indent>, C<space_before> and
1051 C<space_after> (and in the future possibly more) flags in one call to
1052 generate the most readable (or most compact) form possible.
1053
1054 Equivalent to:
1055
1056    $json->indent->space_before->space_after
1057
1058 The indent space length is three and JSON::XS cannot change the indent
1059 space length.
1060
1061 =head2 indent
1062
1063     $json = $json->indent([$enable])
1064     
1065     $enabled = $json->get_indent
1066
1067 If C<$enable> is true (or missing), then the C<encode> method will use a multiline
1068 format as output, putting every array member or object/hash key-value pair
1069 into its own line, identifying them properly.
1070
1071 If C<$enable> is false, no newlines or indenting will be produced, and the
1072 resulting JSON text is guaranteed not to contain any C<newlines>.
1073
1074 This setting has no effect when decoding JSON texts.
1075
1076 The indent space length is three.
1077 With JSON::PP, you can also access C<indent_length> to change indent space length.
1078
1079
1080 =head2 space_before
1081
1082     $json = $json->space_before([$enable])
1083     
1084     $enabled = $json->get_space_before
1085
1086 If C<$enable> is true (or missing), then the C<encode> method will add an extra
1087 optional space before the C<:> separating keys from values in JSON objects.
1088
1089 If C<$enable> is false, then the C<encode> method will not add any extra
1090 space at those places.
1091
1092 This setting has no effect when decoding JSON texts.
1093
1094 Example, space_before enabled, space_after and indent disabled:
1095
1096    {"key" :"value"}
1097
1098
1099 =head2 space_after
1100
1101     $json = $json->space_after([$enable])
1102     
1103     $enabled = $json->get_space_after
1104
1105 If C<$enable> is true (or missing), then the C<encode> method will add an extra
1106 optional space after the C<:> separating keys from values in JSON objects
1107 and extra whitespace after the C<,> separating key-value pairs and array
1108 members.
1109
1110 If C<$enable> is false, then the C<encode> method will not add any extra
1111 space at those places.
1112
1113 This setting has no effect when decoding JSON texts.
1114
1115 Example, space_before and indent disabled, space_after enabled:
1116
1117    {"key": "value"}
1118
1119
1120 =head2 relaxed
1121
1122     $json = $json->relaxed([$enable])
1123     
1124     $enabled = $json->get_relaxed
1125
1126 If C<$enable> is true (or missing), then C<decode> will accept some
1127 extensions to normal JSON syntax (see below). C<encode> will not be
1128 affected in anyway. I<Be aware that this option makes you accept invalid
1129 JSON texts as if they were valid!>. I suggest only to use this option to
1130 parse application-specific files written by humans (configuration files,
1131 resource files etc.)
1132
1133 If C<$enable> is false (the default), then C<decode> will only accept
1134 valid JSON texts.
1135
1136 Currently accepted extensions are:
1137
1138 =over 4
1139
1140 =item * list items can have an end-comma
1141
1142 JSON I<separates> array elements and key-value pairs with commas. This
1143 can be annoying if you write JSON texts manually and want to be able to
1144 quickly append elements, so this extension accepts comma at the end of
1145 such items not just between them:
1146
1147    [
1148       1,
1149       2, <- this comma not normally allowed
1150    ]
1151    {
1152       "k1": "v1",
1153       "k2": "v2", <- this comma not normally allowed
1154    }
1155
1156 =item * shell-style '#'-comments
1157
1158 Whenever JSON allows whitespace, shell-style comments are additionally
1159 allowed. They are terminated by the first carriage-return or line-feed
1160 character, after which more white-space and comments are allowed.
1161
1162   [
1163      1, # this comment not allowed in JSON
1164         # neither this one...
1165   ]
1166
1167 =back
1168
1169
1170 =head2 canonical
1171
1172     $json = $json->canonical([$enable])
1173     
1174     $enabled = $json->get_canonical
1175
1176 If C<$enable> is true (or missing), then the C<encode> method will output JSON objects
1177 by sorting their keys. This is adding a comparatively high overhead.
1178
1179 If C<$enable> is false, then the C<encode> method will output key-value
1180 pairs in the order Perl stores them (which will likely change between runs
1181 of the same script).
1182
1183 This option is useful if you want the same data structure to be encoded as
1184 the same JSON text (given the same overall settings). If it is disabled,
1185 the same hash might be encoded differently even if contains the same data,
1186 as key-value pairs have no inherent ordering in Perl.
1187
1188 This setting has no effect when decoding JSON texts.
1189
1190 =head2 allow_nonref
1191
1192     $json = $json->allow_nonref([$enable])
1193     
1194     $enabled = $json->get_allow_nonref
1195
1196 If C<$enable> is true (or missing), then the C<encode> method can convert a
1197 non-reference into its corresponding string, number or null JSON value,
1198 which is an extension to RFC4627. Likewise, C<decode> will accept those JSON
1199 values instead of croaking.
1200
1201 If C<$enable> is false, then the C<encode> method will croak if it isn't
1202 passed an arrayref or hashref, as JSON texts must either be an object
1203 or array. Likewise, C<decode> will croak if given something that is not a
1204 JSON object or array.
1205
1206    JSON->new->allow_nonref->encode ("Hello, World!")
1207    => "Hello, World!"
1208
1209 =head2 allow_unknown
1210
1211     $json = $json->allow_unknown ([$enable])
1212     
1213     $enabled = $json->get_allow_unknown
1214
1215 If $enable is true (or missing), then "encode" will *not* throw an
1216 exception when it encounters values it cannot represent in JSON (for
1217 example, filehandles) but instead will encode a JSON "null" value.
1218 Note that blessed objects are not included here and are handled
1219 separately by c<allow_nonref>.
1220
1221 If $enable is false (the default), then "encode" will throw an
1222 exception when it encounters anything it cannot encode as JSON.
1223
1224 This option does not affect "decode" in any way, and it is
1225 recommended to leave it off unless you know your communications
1226 partner.
1227
1228 =head2 allow_blessed
1229
1230     $json = $json->allow_blessed([$enable])
1231     
1232     $enabled = $json->get_allow_blessed
1233
1234 If C<$enable> is true (or missing), then the C<encode> method will not
1235 barf when it encounters a blessed reference. Instead, the value of the
1236 B<convert_blessed> option will decide whether C<null> (C<convert_blessed>
1237 disabled or no C<TO_JSON> method found) or a representation of the
1238 object (C<convert_blessed> enabled and C<TO_JSON> method found) is being
1239 encoded. Has no effect on C<decode>.
1240
1241 If C<$enable> is false (the default), then C<encode> will throw an
1242 exception when it encounters a blessed object.
1243
1244
1245 =head2 convert_blessed
1246
1247     $json = $json->convert_blessed([$enable])
1248     
1249     $enabled = $json->get_convert_blessed
1250
1251 If C<$enable> is true (or missing), then C<encode>, upon encountering a
1252 blessed object, will check for the availability of the C<TO_JSON> method
1253 on the object's class. If found, it will be called in scalar context
1254 and the resulting scalar will be encoded instead of the object. If no
1255 C<TO_JSON> method is found, the value of C<allow_blessed> will decide what
1256 to do.
1257
1258 The C<TO_JSON> method may safely call die if it wants. If C<TO_JSON>
1259 returns other blessed objects, those will be handled in the same
1260 way. C<TO_JSON> must take care of not causing an endless recursion cycle
1261 (== crash) in this case. The name of C<TO_JSON> was chosen because other
1262 methods called by the Perl core (== not by the user of the object) are
1263 usually in upper case letters and to avoid collisions with the C<to_json>
1264 function or method.
1265
1266 This setting does not yet influence C<decode> in any way.
1267
1268 If C<$enable> is false, then the C<allow_blessed> setting will decide what
1269 to do when a blessed object is found.
1270
1271 =over
1272
1273 =item convert_blessed_universally mode
1274
1275 If use C<JSON> with C<-convert_blessed_universally>, the C<UNIVERSAL::TO_JSON>
1276 subroutine is defined as the below code:
1277
1278    *UNIVERSAL::TO_JSON = sub {
1279        my $b_obj = B::svref_2object( $_[0] );
1280        return    $b_obj->isa('B::HV') ? { %{ $_[0] } }
1281                : $b_obj->isa('B::AV') ? [ @{ $_[0] } ]
1282                : undef
1283                ;
1284    }
1285
1286 This will cause that C<encode> method converts simple blessed objects into
1287 JSON objects as non-blessed object.
1288
1289    JSON -convert_blessed_universally;
1290    $json->allow_blessed->convert_blessed->encode( $blessed_object )
1291
1292 This feature is experimental and may be removed in the future.
1293
1294 =back
1295
1296 =head2 filter_json_object
1297
1298     $json = $json->filter_json_object([$coderef])
1299
1300 When C<$coderef> is specified, it will be called from C<decode> each
1301 time it decodes a JSON object. The only argument passed to the coderef
1302 is a reference to the newly-created hash. If the code references returns
1303 a single scalar (which need not be a reference), this value
1304 (i.e. a copy of that scalar to avoid aliasing) is inserted into the
1305 deserialised data structure. If it returns an empty list
1306 (NOTE: I<not> C<undef>, which is a valid scalar), the original deserialised
1307 hash will be inserted. This setting can slow down decoding considerably.
1308
1309 When C<$coderef> is omitted or undefined, any existing callback will
1310 be removed and C<decode> will not change the deserialised hash in any
1311 way.
1312
1313 Example, convert all JSON objects into the integer 5:
1314
1315    my $js = JSON->new->filter_json_object (sub { 5 });
1316    # returns [5]
1317    $js->decode ('[{}]'); # the given subroutine takes a hash reference.
1318    # throw an exception because allow_nonref is not enabled
1319    # so a lone 5 is not allowed.
1320    $js->decode ('{"a":1, "b":2}');
1321
1322
1323 =head2 filter_json_single_key_object
1324
1325     $json = $json->filter_json_single_key_object($key [=> $coderef])
1326
1327 Works remotely similar to C<filter_json_object>, but is only called for
1328 JSON objects having a single key named C<$key>.
1329
1330 This C<$coderef> is called before the one specified via
1331 C<filter_json_object>, if any. It gets passed the single value in the JSON
1332 object. If it returns a single value, it will be inserted into the data
1333 structure. If it returns nothing (not even C<undef> but the empty list),
1334 the callback from C<filter_json_object> will be called next, as if no
1335 single-key callback were specified.
1336
1337 If C<$coderef> is omitted or undefined, the corresponding callback will be
1338 disabled. There can only ever be one callback for a given key.
1339
1340 As this callback gets called less often then the C<filter_json_object>
1341 one, decoding speed will not usually suffer as much. Therefore, single-key
1342 objects make excellent targets to serialise Perl objects into, especially
1343 as single-key JSON objects are as close to the type-tagged value concept
1344 as JSON gets (it's basically an ID/VALUE tuple). Of course, JSON does not
1345 support this in any way, so you need to make sure your data never looks
1346 like a serialised Perl hash.
1347
1348 Typical names for the single object key are C<__class_whatever__>, or
1349 C<$__dollars_are_rarely_used__$> or C<}ugly_brace_placement>, or even
1350 things like C<__class_md5sum(classname)__>, to reduce the risk of clashing
1351 with real hashes.
1352
1353 Example, decode JSON objects of the form C<< { "__widget__" => <id> } >>
1354 into the corresponding C<< $WIDGET{<id>} >> object:
1355
1356    # return whatever is in $WIDGET{5}:
1357    JSON
1358       ->new
1359       ->filter_json_single_key_object (__widget__ => sub {
1360             $WIDGET{ $_[0] }
1361          })
1362       ->decode ('{"__widget__": 5')
1363
1364    # this can be used with a TO_JSON method in some "widget" class
1365    # for serialisation to json:
1366    sub WidgetBase::TO_JSON {
1367       my ($self) = @_;
1368
1369       unless ($self->{id}) {
1370          $self->{id} = ..get..some..id..;
1371          $WIDGET{$self->{id}} = $self;
1372       }
1373
1374       { __widget__ => $self->{id} }
1375    }
1376
1377
1378 =head2 shrink
1379
1380     $json = $json->shrink([$enable])
1381     
1382     $enabled = $json->get_shrink
1383
1384 With JSON::XS, this flag resizes strings generated by either
1385 C<encode> or C<decode> to their minimum size possible. This can save
1386 memory when your JSON texts are either very very long or you have many
1387 short strings. It will also try to downgrade any strings to octet-form
1388 if possible: perl stores strings internally either in an encoding called
1389 UTF-X or in octet-form. The latter cannot store everything but uses less
1390 space in general (and some buggy Perl or C code might even rely on that
1391 internal representation being used).
1392
1393 With JSON::PP, it is noop about resizing strings but tries
1394 C<utf8::downgrade> to the returned string by C<encode>. See to L<utf8>.
1395
1396 See to L<JSON::XS/OBJECT-ORIENTED INTERFACE> and L<JSON::PP/METHODS>.
1397
1398 =head2 max_depth
1399
1400     $json = $json->max_depth([$maximum_nesting_depth])
1401     
1402     $max_depth = $json->get_max_depth
1403
1404 Sets the maximum nesting level (default C<512>) accepted while encoding
1405 or decoding. If a higher nesting level is detected in JSON text or a Perl
1406 data structure, then the encoder and decoder will stop and croak at that
1407 point.
1408
1409 Nesting level is defined by number of hash- or arrayrefs that the encoder
1410 needs to traverse to reach a given point or the number of C<{> or C<[>
1411 characters without their matching closing parenthesis crossed to reach a
1412 given character in a string.
1413
1414 If no argument is given, the highest possible setting will be used, which
1415 is rarely useful.
1416
1417 Note that nesting is implemented by recursion in C. The default value has
1418 been chosen to be as large as typical operating systems allow without
1419 crashing. (JSON::XS)
1420
1421 With JSON::PP as the backend, when a large value (100 or more) was set and
1422 it de/encodes a deep nested object/text, it may raise a warning
1423 'Deep recursion on subroutine' at the perl runtime phase.
1424
1425 See L<JSON::XS/SECURITY CONSIDERATIONS> for more info on why this is useful.
1426
1427 =head2 max_size
1428
1429     $json = $json->max_size([$maximum_string_size])
1430     
1431     $max_size = $json->get_max_size
1432
1433 Set the maximum length a JSON text may have (in bytes) where decoding is
1434 being attempted. The default is C<0>, meaning no limit. When C<decode>
1435 is called on a string that is longer then this many bytes, it will not
1436 attempt to decode the string but throw an exception. This setting has no
1437 effect on C<encode> (yet).
1438
1439 If no argument is given, the limit check will be deactivated (same as when
1440 C<0> is specified).
1441
1442 See L<JSON::XS/SECURITY CONSIDERATIONS>, below, for more info on why this is useful.
1443
1444 =head2 encode
1445
1446     $json_text = $json->encode($perl_scalar)
1447
1448 Converts the given Perl data structure (a simple scalar or a reference
1449 to a hash or array) to its JSON representation. Simple scalars will be
1450 converted into JSON string or number sequences, while references to arrays
1451 become JSON arrays and references to hashes become JSON objects. Undefined
1452 Perl values (e.g. C<undef>) become JSON C<null> values.
1453 References to the integers C<0> and C<1> are converted into C<true> and C<false>.
1454
1455 =head2 decode
1456
1457     $perl_scalar = $json->decode($json_text)
1458
1459 The opposite of C<encode>: expects a JSON text and tries to parse it,
1460 returning the resulting simple scalar or reference. Croaks on error.
1461
1462 JSON numbers and strings become simple Perl scalars. JSON arrays become
1463 Perl arrayrefs and JSON objects become Perl hashrefs. C<true> becomes
1464 C<1> (C<JSON::true>), C<false> becomes C<0> (C<JSON::false>) and
1465 C<null> becomes C<undef>.
1466
1467 =head2 decode_prefix
1468
1469     ($perl_scalar, $characters) = $json->decode_prefix($json_text)
1470
1471 This works like the C<decode> method, but instead of raising an exception
1472 when there is trailing garbage after the first JSON object, it will
1473 silently stop parsing there and return the number of characters consumed
1474 so far.
1475
1476    JSON->new->decode_prefix ("[1] the tail")
1477    => ([], 3)
1478
1479 See to L<JSON::XS/OBJECT-ORIENTED INTERFACE>
1480
1481 =head2 property
1482
1483     $boolean = $json->property($property_name)
1484
1485 Returns a boolean value about above some properties.
1486
1487 The available properties are C<ascii>, C<latin1>, C<utf8>,
1488 C<indent>,C<space_before>, C<space_after>, C<relaxed>, C<canonical>,
1489 C<allow_nonref>, C<allow_unknown>, C<allow_blessed>, C<convert_blessed>,
1490 C<shrink>, C<max_depth> and C<max_size>.
1491
1492    $boolean = $json->property('utf8');
1493     => 0
1494    $json->utf8;
1495    $boolean = $json->property('utf8');
1496     => 1
1497
1498 Sets the property with a given boolean value.
1499
1500     $json = $json->property($property_name => $boolean);
1501
1502 With no argument, it returns all the above properties as a hash reference.
1503
1504     $flag_hashref = $json->property();
1505
1506 =head1 INCREMENTAL PARSING
1507
1508 Most of this section are copied and modified from L<JSON::XS/INCREMENTAL PARSING>.
1509
1510 In some cases, there is the need for incremental parsing of JSON texts.
1511 This module does allow you to parse a JSON stream incrementally.
1512 It does so by accumulating text until it has a full JSON object, which
1513 it then can decode. This process is similar to using C<decode_prefix>
1514 to see if a full JSON object is available, but is much more efficient
1515 (and can be implemented with a minimum of method calls).
1516
1517 The backend module will only attempt to parse the JSON text once it is sure it
1518 has enough text to get a decisive result, using a very simple but
1519 truly incremental parser. This means that it sometimes won't stop as
1520 early as the full parser, for example, it doesn't detect parenthesis
1521 mismatches. The only thing it guarantees is that it starts decoding as
1522 soon as a syntactically valid JSON text has been seen. This means you need
1523 to set resource limits (e.g. C<max_size>) to ensure the parser will stop
1524 parsing in the presence if syntax errors.
1525
1526 The following methods implement this incremental parser.
1527
1528 =head2 incr_parse
1529
1530     $json->incr_parse( [$string] ) # void context
1531     
1532     $obj_or_undef = $json->incr_parse( [$string] ) # scalar context
1533     
1534     @obj_or_empty = $json->incr_parse( [$string] ) # list context
1535
1536 This is the central parsing function. It can both append new text and
1537 extract objects from the stream accumulated so far (both of these
1538 functions are optional).
1539
1540 If C<$string> is given, then this string is appended to the already
1541 existing JSON fragment stored in the C<$json> object.
1542
1543 After that, if the function is called in void context, it will simply
1544 return without doing anything further. This can be used to add more text
1545 in as many chunks as you want.
1546
1547 If the method is called in scalar context, then it will try to extract
1548 exactly I<one> JSON object. If that is successful, it will return this
1549 object, otherwise it will return C<undef>. If there is a parse error,
1550 this method will croak just as C<decode> would do (one can then use
1551 C<incr_skip> to skip the erroneous part). This is the most common way of
1552 using the method.
1553
1554 And finally, in list context, it will try to extract as many objects
1555 from the stream as it can find and return them, or the empty list
1556 otherwise. For this to work, there must be no separators between the JSON
1557 objects or arrays, instead they must be concatenated back-to-back. If
1558 an error occurs, an exception will be raised as in the scalar context
1559 case. Note that in this case, any previously-parsed JSON texts will be
1560 lost.
1561
1562 Example: Parse some JSON arrays/objects in a given string and return them.
1563
1564     my @objs = JSON->new->incr_parse ("[5][7][1,2]");
1565
1566 =head2 incr_text
1567
1568     $lvalue_string = $json->incr_text
1569
1570 This method returns the currently stored JSON fragment as an lvalue, that
1571 is, you can manipulate it. This I<only> works when a preceding call to
1572 C<incr_parse> in I<scalar context> successfully returned an object. Under
1573 all other circumstances you must not call this function (I mean it.
1574 although in simple tests it might actually work, it I<will> fail under
1575 real world conditions). As a special exception, you can also call this
1576 method before having parsed anything.
1577
1578 This function is useful in two cases: a) finding the trailing text after a
1579 JSON object or b) parsing multiple JSON objects separated by non-JSON text
1580 (such as commas).
1581
1582     $json->incr_text =~ s/\s*,\s*//;
1583
1584 In Perl 5.005, C<lvalue> attribute is not available.
1585 You must write codes like the below:
1586
1587     $string = $json->incr_text;
1588     $string =~ s/\s*,\s*//;
1589     $json->incr_text( $string );
1590
1591 =head2 incr_skip
1592
1593     $json->incr_skip
1594
1595 This will reset the state of the incremental parser and will remove the
1596 parsed text from the input buffer. This is useful after C<incr_parse>
1597 died, in which case the input buffer and incremental parser state is left
1598 unchanged, to skip the text parsed so far and to reset the parse state.
1599
1600 =head2 incr_reset
1601
1602     $json->incr_reset
1603
1604 This completely resets the incremental parser, that is, after this call,
1605 it will be as if the parser had never parsed anything.
1606
1607 This is useful if you want to repeatedly parse JSON objects and want to
1608 ignore any trailing data, which means you have to reset the parser after
1609 each successful decode.
1610
1611 See to L<JSON::XS/INCREMENTAL PARSING> for examples.
1612
1613
1614 =head1 JSON::PP SUPPORT METHODS
1615
1616 The below methods are JSON::PP own methods, so when C<JSON> works
1617 with JSON::PP (i.e. the created object is a JSON::PP object), available.
1618 See to L<JSON::PP/JSON::PP OWN METHODS> in detail.
1619
1620 If you use C<JSON> with additional C<-support_by_pp>, some methods
1621 are available even with JSON::XS. See to L<USE PP FEATURES EVEN THOUGH XS BACKEND>.
1622
1623    BEING { $ENV{PERL_JSON_BACKEND} = 'JSON::XS' }
1624    
1625    use JSON -support_by_pp;
1626    
1627    my $json = JSON->new;
1628    $json->allow_nonref->escape_slash->encode("/");
1629
1630    # functional interfaces too.
1631    print to_json(["/"], {escape_slash => 1});
1632    print from_json('["foo"]', {utf8 => 1});
1633
1634 If you do not want to all functions but C<-support_by_pp>,
1635 use C<-no_export>.
1636
1637    use JSON -support_by_pp, -no_export;
1638    # functional interfaces are not exported.
1639
1640 =head2 allow_singlequote
1641
1642     $json = $json->allow_singlequote([$enable])
1643
1644 If C<$enable> is true (or missing), then C<decode> will accept
1645 any JSON strings quoted by single quotations that are invalid JSON
1646 format.
1647
1648     $json->allow_singlequote->decode({"foo":'bar'});
1649     $json->allow_singlequote->decode({'foo':"bar"});
1650     $json->allow_singlequote->decode({'foo':'bar'});
1651
1652 As same as the C<relaxed> option, this option may be used to parse
1653 application-specific files written by humans.
1654
1655 =head2 allow_barekey
1656
1657     $json = $json->allow_barekey([$enable])
1658
1659 If C<$enable> is true (or missing), then C<decode> will accept
1660 bare keys of JSON object that are invalid JSON format.
1661
1662 As same as the C<relaxed> option, this option may be used to parse
1663 application-specific files written by humans.
1664
1665     $json->allow_barekey->decode('{foo:"bar"}');
1666
1667 =head2 allow_bignum
1668
1669     $json = $json->allow_bignum([$enable])
1670
1671 If C<$enable> is true (or missing), then C<decode> will convert
1672 the big integer Perl cannot handle as integer into a L<Math::BigInt>
1673 object and convert a floating number (any) into a L<Math::BigFloat>.
1674
1675 On the contrary, C<encode> converts C<Math::BigInt> objects and C<Math::BigFloat>
1676 objects into JSON numbers with C<allow_blessed> enable.
1677
1678    $json->allow_nonref->allow_blessed->allow_bignum;
1679    $bigfloat = $json->decode('2.000000000000000000000000001');
1680    print $json->encode($bigfloat);
1681    # => 2.000000000000000000000000001
1682
1683 See to L<MAPPING> about the conversion of JSON number.
1684
1685 =head2 loose
1686
1687     $json = $json->loose([$enable])
1688
1689 The unescaped [\x00-\x1f\x22\x2f\x5c] strings are invalid in JSON strings
1690 and the module doesn't allow to C<decode> to these (except for \x2f).
1691 If C<$enable> is true (or missing), then C<decode>  will accept these
1692 unescaped strings.
1693
1694     $json->loose->decode(qq|["abc
1695                                    def"]|);
1696
1697 See to L<JSON::PP/JSON::PP OWN METHODS>.
1698
1699 =head2 escape_slash
1700
1701     $json = $json->escape_slash([$enable])
1702
1703 According to JSON Grammar, I<slash> (U+002F) is escaped. But by default
1704 JSON backend modules encode strings without escaping slash.
1705
1706 If C<$enable> is true (or missing), then C<encode> will escape slashes.
1707
1708 =head2 indent_length
1709
1710     $json = $json->indent_length($length)
1711
1712 With JSON::XS, The indent space length is 3 and cannot be changed.
1713 With JSON::PP, it sets the indent space length with the given $length.
1714 The default is 3. The acceptable range is 0 to 15.
1715
1716 =head2 sort_by
1717
1718     $json = $json->sort_by($function_name)
1719     $json = $json->sort_by($subroutine_ref)
1720
1721 If $function_name or $subroutine_ref are set, its sort routine are used.
1722
1723    $js = $pc->sort_by(sub { $JSON::PP::a cmp $JSON::PP::b })->encode($obj);
1724    # is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|);
1725
1726    $js = $pc->sort_by('own_sort')->encode($obj);
1727    # is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|);
1728
1729    sub JSON::PP::own_sort { $JSON::PP::a cmp $JSON::PP::b }
1730
1731 As the sorting routine runs in the JSON::PP scope, the given
1732 subroutine name and the special variables C<$a>, C<$b> will begin
1733 with 'JSON::PP::'.
1734
1735 If $integer is set, then the effect is same as C<canonical> on.
1736
1737 See to L<JSON::PP/JSON::PP OWN METHODS>.
1738
1739 =head1 MAPPING
1740
1741 This section is copied from JSON::XS and modified to C<JSON>.
1742 JSON::XS and JSON::PP mapping mechanisms are almost equivalent.
1743
1744 See to L<JSON::XS/MAPPING>.
1745
1746 =head2 JSON -> PERL
1747
1748 =over 4
1749
1750 =item object
1751
1752 A JSON object becomes a reference to a hash in Perl. No ordering of object
1753 keys is preserved (JSON does not preserver object key ordering itself).
1754
1755 =item array
1756
1757 A JSON array becomes a reference to an array in Perl.
1758
1759 =item string
1760
1761 A JSON string becomes a string scalar in Perl - Unicode codepoints in JSON
1762 are represented by the same codepoints in the Perl string, so no manual
1763 decoding is necessary.
1764
1765 =item number
1766
1767 A JSON number becomes either an integer, numeric (floating point) or
1768 string scalar in perl, depending on its range and any fractional parts. On
1769 the Perl level, there is no difference between those as Perl handles all
1770 the conversion details, but an integer may take slightly less memory and
1771 might represent more values exactly than floating point numbers.
1772
1773 If the number consists of digits only, C<JSON> will try to represent
1774 it as an integer value. If that fails, it will try to represent it as
1775 a numeric (floating point) value if that is possible without loss of
1776 precision. Otherwise it will preserve the number as a string value (in
1777 which case you lose roundtripping ability, as the JSON number will be
1778 re-encoded to a JSON string).
1779
1780 Numbers containing a fractional or exponential part will always be
1781 represented as numeric (floating point) values, possibly at a loss of
1782 precision (in which case you might lose perfect roundtripping ability, but
1783 the JSON number will still be re-encoded as a JSON number).
1784
1785 Note that precision is not accuracy - binary floating point values cannot
1786 represent most decimal fractions exactly, and when converting from and to
1787 floating point, C<JSON> only guarantees precision up to but not including
1788 the least significant bit.
1789
1790 If the backend is JSON::PP and C<allow_bignum> is enable, the big integers 
1791 and the numeric can be optionally converted into L<Math::BigInt> and
1792 L<Math::BigFloat> objects.
1793
1794 =item true, false
1795
1796 These JSON atoms become C<JSON::true> and C<JSON::false>,
1797 respectively. They are overloaded to act almost exactly like the numbers
1798 C<1> and C<0>. You can check whether a scalar is a JSON boolean by using
1799 the C<JSON::is_bool> function.
1800
1801 If C<JSON::true> and C<JSON::false> are used as strings or compared as strings,
1802 they represent as C<true> and C<false> respectively.
1803
1804    print JSON::true . "\n";
1805     => true
1806    print JSON::true + 1;
1807     => 1
1808
1809    ok(JSON::true eq 'true');
1810    ok(JSON::true eq  '1');
1811    ok(JSON::true == 1);
1812
1813 C<JSON> will install these missing overloading features to the backend modules.
1814
1815
1816 =item null
1817
1818 A JSON null atom becomes C<undef> in Perl.
1819
1820 C<JSON::null> returns C<undef>.
1821
1822 =back
1823
1824
1825 =head2 PERL -> JSON
1826
1827 The mapping from Perl to JSON is slightly more difficult, as Perl is a
1828 truly typeless language, so we can only guess which JSON type is meant by
1829 a Perl value.
1830
1831 =over 4
1832
1833 =item hash references
1834
1835 Perl hash references become JSON objects. As there is no inherent ordering
1836 in hash keys (or JSON objects), they will usually be encoded in a
1837 pseudo-random order that can change between runs of the same program but
1838 stays generally the same within a single run of a program. C<JSON>
1839 optionally sort the hash keys (determined by the I<canonical> flag), so
1840 the same data structure will serialise to the same JSON text (given same
1841 settings and version of JSON::XS), but this incurs a runtime overhead
1842 and is only rarely useful, e.g. when you want to compare some JSON text
1843 against another for equality.
1844
1845 In future, the ordered object feature will be added to JSON::PP using C<tie> mechanism.
1846
1847
1848 =item array references
1849
1850 Perl array references become JSON arrays.
1851
1852 =item other references
1853
1854 Other unblessed references are generally not allowed and will cause an
1855 exception to be thrown, except for references to the integers C<0> and
1856 C<1>, which get turned into C<false> and C<true> atoms in JSON. You can
1857 also use C<JSON::false> and C<JSON::true> to improve readability.
1858
1859    to_json [\0,JSON::true]      # yields [false,true]
1860
1861 =item JSON::true, JSON::false, JSON::null
1862
1863 These special values become JSON true and JSON false values,
1864 respectively. You can also use C<\1> and C<\0> directly if you want.
1865
1866 JSON::null returns C<undef>.
1867
1868 =item blessed objects
1869
1870 Blessed objects are not directly representable in JSON. See the
1871 C<allow_blessed> and C<convert_blessed> methods on various options on
1872 how to deal with this: basically, you can choose between throwing an
1873 exception, encoding the reference as if it weren't blessed, or provide
1874 your own serialiser method.
1875
1876 With C<convert_blessed_universally> mode,  C<encode> converts blessed
1877 hash references or blessed array references (contains other blessed references)
1878 into JSON members and arrays.
1879
1880    use JSON -convert_blessed_universally;
1881    JSON->new->allow_blessed->convert_blessed->encode( $blessed_object );
1882
1883 See to L<convert_blessed>.
1884
1885 =item simple scalars
1886
1887 Simple Perl scalars (any scalar that is not a reference) are the most
1888 difficult objects to encode: JSON::XS and JSON::PP will encode undefined scalars as
1889 JSON C<null> values, scalars that have last been used in a string context
1890 before encoding as JSON strings, and anything else as number value:
1891
1892    # dump as number
1893    encode_json [2]                      # yields [2]
1894    encode_json [-3.0e17]                # yields [-3e+17]
1895    my $value = 5; encode_json [$value]  # yields [5]
1896
1897    # used as string, so dump as string
1898    print $value;
1899    encode_json [$value]                 # yields ["5"]
1900
1901    # undef becomes null
1902    encode_json [undef]                  # yields [null]
1903
1904 You can force the type to be a string by stringifying it:
1905
1906    my $x = 3.1; # some variable containing a number
1907    "$x";        # stringified
1908    $x .= "";    # another, more awkward way to stringify
1909    print $x;    # perl does it for you, too, quite often
1910
1911 You can force the type to be a number by numifying it:
1912
1913    my $x = "3"; # some variable containing a string
1914    $x += 0;     # numify it, ensuring it will be dumped as a number
1915    $x *= 1;     # same thing, the choice is yours.
1916
1917 You can not currently force the type in other, less obscure, ways.
1918
1919 Note that numerical precision has the same meaning as under Perl (so
1920 binary to decimal conversion follows the same rules as in Perl, which
1921 can differ to other languages). Also, your perl interpreter might expose
1922 extensions to the floating point numbers of your platform, such as
1923 infinities or NaN's - these cannot be represented in JSON, and it is an
1924 error to pass those in.
1925
1926 =item Big Number
1927
1928 If the backend is JSON::PP and C<allow_bignum> is enable, 
1929 C<encode> converts C<Math::BigInt> objects and C<Math::BigFloat>
1930 objects into JSON numbers.
1931
1932
1933 =back
1934
1935 =head1 JSON and ECMAscript
1936
1937 See to L<JSON::XS/JSON and ECMAscript>.
1938
1939 =head1 JSON and YAML
1940
1941 JSON is not a subset of YAML.
1942 See to L<JSON::XS/JSON and YAML>.
1943
1944
1945 =head1 BACKEND MODULE DECISION
1946
1947 When you use C<JSON>, C<JSON> tries to C<use> JSON::XS. If this call failed, it will
1948 C<uses> JSON::PP. The required JSON::XS version is I<2.2> or later.
1949
1950 The C<JSON> constructor method returns an object inherited from the backend module,
1951 and JSON::XS object is a blessed scalar reference while JSON::PP is a blessed hash
1952 reference.
1953
1954 So, your program should not depend on the backend module, especially
1955 returned objects should not be modified.
1956
1957  my $json = JSON->new; # XS or PP?
1958  $json->{stash} = 'this is xs object'; # this code may raise an error!
1959
1960 To check the backend module, there are some methods - C<backend>, C<is_pp> and C<is_xs>.
1961
1962   JSON->backend; # 'JSON::XS' or 'JSON::PP'
1963   
1964   JSON->backend->is_pp: # 0 or 1
1965   
1966   JSON->backend->is_xs: # 1 or 0
1967   
1968   $json->is_xs; # 1 or 0
1969   
1970   $json->is_pp; # 0 or 1
1971
1972
1973 If you set an environment variable C<PERL_JSON_BACKEND>, the calling action will be changed.
1974
1975 =over
1976
1977 =item PERL_JSON_BACKEND = 0 or PERL_JSON_BACKEND = 'JSON::PP'
1978
1979 Always use JSON::PP
1980
1981 =item PERL_JSON_BACKEND == 1 or PERL_JSON_BACKEND = 'JSON::XS,JSON::PP'
1982
1983 (The default) Use compiled JSON::XS if it is properly compiled & installed,
1984 otherwise use JSON::PP.
1985
1986 =item PERL_JSON_BACKEND == 2 or PERL_JSON_BACKEND = 'JSON::XS'
1987
1988 Always use compiled JSON::XS, die if it isn't properly compiled & installed.
1989
1990 =item PERL_JSON_BACKEND = 'JSON::backportPP'
1991
1992 Always use JSON::backportPP.
1993 JSON::backportPP is JSON::PP back port module.
1994 C<JSON> includes JSON::backportPP instead of JSON::PP.
1995
1996 =back
1997
1998 These ideas come from L<DBI::PurePerl> mechanism.
1999
2000 example:
2001
2002  BEGIN { $ENV{PERL_JSON_BACKEND} = 'JSON::PP' }
2003  use JSON; # always uses JSON::PP
2004
2005 In future, it may be able to specify another module.
2006
2007 =head1 USE PP FEATURES EVEN THOUGH XS BACKEND
2008
2009 Many methods are available with either JSON::XS or JSON::PP and
2010 when the backend module is JSON::XS, if any JSON::PP specific (i.e. JSON::XS unsupported)
2011 method is called, it will C<warn> and be noop.
2012
2013 But If you C<use> C<JSON> passing the optional string C<-support_by_pp>,
2014 it makes a part of those unsupported methods available.
2015 This feature is achieved by using JSON::PP in C<de/encode>.
2016
2017    BEGIN { $ENV{PERL_JSON_BACKEND} = 2 } # with JSON::XS
2018    use JSON -support_by_pp;
2019    my $json = JSON->new;
2020    $json->allow_nonref->escape_slash->encode("/");
2021
2022 At this time, the returned object is a C<JSON::Backend::XS::Supportable>
2023 object (re-blessed XS object), and  by checking JSON::XS unsupported flags
2024 in de/encoding, can support some unsupported methods - C<loose>, C<allow_bignum>,
2025 C<allow_barekey>, C<allow_singlequote>, C<escape_slash> and C<indent_length>.
2026
2027 When any unsupported methods are not enable, C<XS de/encode> will be
2028 used as is. The switch is achieved by changing the symbolic tables.
2029
2030 C<-support_by_pp> is effective only when the backend module is JSON::XS
2031 and it makes the de/encoding speed down a bit.
2032
2033 See to L<JSON::PP SUPPORT METHODS>.
2034
2035 =head1 INCOMPATIBLE CHANGES TO OLD VERSION
2036
2037 There are big incompatibility between new version (2.00) and old (1.xx).
2038 If you use old C<JSON> 1.xx in your code, please check it.
2039
2040 See to L<Transition ways from 1.xx to 2.xx.>
2041
2042 =over
2043
2044 =item jsonToObj and objToJson are obsoleted.
2045
2046 Non Perl-style name C<jsonToObj> and C<objToJson> are obsoleted
2047 (but not yet deleted from the source).
2048 If you use these functions in your code, please replace them
2049 with C<from_json> and C<to_json>.
2050
2051
2052 =item Global variables are no longer available.
2053
2054 C<JSON> class variables - C<$JSON::AUTOCONVERT>, C<$JSON::BareKey>, etc...
2055 - are not available any longer.
2056 Instead, various features can be used through object methods.
2057
2058
2059 =item Package JSON::Converter and JSON::Parser are deleted.
2060
2061 Now C<JSON> bundles with JSON::PP which can handle JSON more properly than them.
2062
2063 =item Package JSON::NotString is deleted.
2064
2065 There was C<JSON::NotString> class which represents JSON value C<true>, C<false>, C<null>
2066 and numbers. It was deleted and replaced by C<JSON::Boolean>.
2067
2068 C<JSON::Boolean> represents C<true> and C<false>.
2069
2070 C<JSON::Boolean> does not represent C<null>.
2071
2072 C<JSON::null> returns C<undef>.
2073
2074 C<JSON> makes L<JSON::XS::Boolean> and L<JSON::PP::Boolean> is-a relation
2075 to L<JSON::Boolean>.
2076
2077 =item function JSON::Number is obsoleted.
2078
2079 C<JSON::Number> is now needless because JSON::XS and JSON::PP have
2080 round-trip integrity.
2081
2082 =item JSONRPC modules are deleted.
2083
2084 Perl implementation of JSON-RPC protocol - C<JSONRPC >, C<JSONRPC::Transport::HTTP>
2085 and C<Apache::JSONRPC > are deleted in this distribution.
2086 Instead of them, there is L<JSON::RPC> which supports JSON-RPC protocol version 1.1.
2087
2088 =back
2089
2090 =head2 Transition ways from 1.xx to 2.xx.
2091
2092 You should set C<suport_by_pp> mode firstly, because
2093 it is always successful for the below codes even with JSON::XS.
2094
2095     use JSON -support_by_pp;
2096
2097 =over
2098
2099 =item Exported jsonToObj (simple)
2100
2101   from_json($json_text);
2102
2103 =item Exported objToJson (simple)
2104
2105   to_json($perl_scalar);
2106
2107 =item Exported jsonToObj (advanced)
2108
2109   $flags = {allow_barekey => 1, allow_singlequote => 1};
2110   from_json($json_text, $flags);
2111
2112 equivalent to:
2113
2114   $JSON::BareKey = 1;
2115   $JSON::QuotApos = 1;
2116   jsonToObj($json_text);
2117
2118 =item Exported objToJson (advanced)
2119
2120   $flags = {allow_blessed => 1, allow_barekey => 1};
2121   to_json($perl_scalar, $flags);
2122
2123 equivalent to:
2124
2125   $JSON::BareKey = 1;
2126   objToJson($perl_scalar);
2127
2128 =item jsonToObj as object method
2129
2130   $json->decode($json_text);
2131
2132 =item objToJson as object method
2133
2134   $json->encode($perl_scalar);
2135
2136 =item new method with parameters
2137
2138 The C<new> method in 2.x takes any parameters no longer.
2139 You can set parameters instead;
2140
2141    $json = JSON->new->pretty;
2142
2143 =item $JSON::Pretty, $JSON::Indent, $JSON::Delimiter
2144
2145 If C<indent> is enable, that means C<$JSON::Pretty> flag set. And
2146 C<$JSON::Delimiter> was substituted by C<space_before> and C<space_after>.
2147 In conclusion:
2148
2149    $json->indent->space_before->space_after;
2150
2151 Equivalent to:
2152
2153   $json->pretty;
2154
2155 To change indent length, use C<indent_length>.
2156
2157 (Only with JSON::PP, if C<-support_by_pp> is not used.)
2158
2159   $json->pretty->indent_length(2)->encode($perl_scalar);
2160
2161 =item $JSON::BareKey
2162
2163 (Only with JSON::PP, if C<-support_by_pp> is not used.)
2164
2165   $json->allow_barekey->decode($json_text)
2166
2167 =item $JSON::ConvBlessed
2168
2169 use C<-convert_blessed_universally>. See to L<convert_blessed>.
2170
2171 =item $JSON::QuotApos
2172
2173 (Only with JSON::PP, if C<-support_by_pp> is not used.)
2174
2175   $json->allow_singlequote->decode($json_text)
2176
2177 =item $JSON::SingleQuote
2178
2179 Disable. C<JSON> does not make such a invalid JSON string any longer.
2180
2181 =item $JSON::KeySort
2182
2183   $json->canonical->encode($perl_scalar)
2184
2185 This is the ascii sort.
2186
2187 If you want to use with your own sort routine, check the C<sort_by> method.
2188
2189 (Only with JSON::PP, even if C<-support_by_pp> is used currently.)
2190
2191   $json->sort_by($sort_routine_ref)->encode($perl_scalar)
2192  
2193   $json->sort_by(sub { $JSON::PP::a <=> $JSON::PP::b })->encode($perl_scalar)
2194
2195 Can't access C<$a> and C<$b> but C<$JSON::PP::a> and C<$JSON::PP::b>.
2196
2197 =item $JSON::SkipInvalid
2198
2199   $json->allow_unknown
2200
2201 =item $JSON::AUTOCONVERT
2202
2203 Needless. C<JSON> backend modules have the round-trip integrity.
2204
2205 =item $JSON::UTF8
2206
2207 Needless because C<JSON> (JSON::XS/JSON::PP) sets
2208 the UTF8 flag on properly.
2209
2210     # With UTF8-flagged strings
2211
2212     $json->allow_nonref;
2213     $str = chr(1000); # UTF8-flagged
2214
2215     $json_text  = $json->utf8(0)->encode($str);
2216     utf8::is_utf8($json_text);
2217     # true
2218     $json_text  = $json->utf8(1)->encode($str);
2219     utf8::is_utf8($json_text);
2220     # false
2221
2222     $str = '"' . chr(1000) . '"'; # UTF8-flagged
2223
2224     $perl_scalar  = $json->utf8(0)->decode($str);
2225     utf8::is_utf8($perl_scalar);
2226     # true
2227     $perl_scalar  = $json->utf8(1)->decode($str);
2228     # died because of 'Wide character in subroutine'
2229
2230 See to L<JSON::XS/A FEW NOTES ON UNICODE AND PERL>.
2231
2232 =item $JSON::UnMapping
2233
2234 Disable. See to L<MAPPING>.
2235
2236 =item $JSON::SelfConvert
2237
2238 This option was deleted.
2239 Instead of it, if a given blessed object has the C<TO_JSON> method,
2240 C<TO_JSON> will be executed with C<convert_blessed>.
2241
2242   $json->convert_blessed->encode($blessed_hashref_or_arrayref)
2243   # if need, call allow_blessed
2244
2245 Note that it was C<toJson> in old version, but now not C<toJson> but C<TO_JSON>.
2246
2247 =back
2248
2249 =head1 TODO
2250
2251 =over
2252
2253 =item example programs
2254
2255 =back
2256
2257 =head1 THREADS
2258
2259 No test with JSON::PP. If with JSON::XS, See to L<JSON::XS/THREADS>.
2260
2261
2262 =head1 BUGS
2263
2264 Please report bugs relevant to C<JSON> to E<lt>makamaka[at]cpan.orgE<gt>.
2265
2266
2267 =head1 SEE ALSO
2268
2269 Most of the document is copied and modified from JSON::XS doc.
2270
2271 L<JSON::XS>, L<JSON::PP>
2272
2273 C<RFC4627>(L<http://www.ietf.org/rfc/rfc4627.txt>)
2274
2275 =head1 AUTHOR
2276
2277 Makamaka Hannyaharamitu, E<lt>makamaka[at]cpan.orgE<gt>
2278
2279 JSON::XS was written by  Marc Lehmann <schmorp[at]schmorp.de>
2280
2281 The release of this new version owes to the courtesy of Marc Lehmann.
2282
2283
2284 =head1 COPYRIGHT AND LICENSE
2285
2286 Copyright 2005-2013 by Makamaka Hannyaharamitu
2287
2288 This library is free software; you can redistribute it and/or modify
2289 it under the same terms as Perl itself. 
2290
2291 =cut
2292