ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/JSON-XS/XS.pm
(Generate patch)

Comparing JSON-XS/XS.pm (file contents):
Revision 1.27 by root, Tue Apr 3 01:25:40 2007 UTC vs.
Revision 1.32 by root, Thu Apr 12 07:25:29 2007 UTC

86package JSON::XS; 86package JSON::XS;
87 87
88use strict; 88use strict;
89 89
90BEGIN { 90BEGIN {
91 our $VERSION = '1.02'; 91 our $VERSION = '1.12';
92 our @ISA = qw(Exporter); 92 our @ISA = qw(Exporter);
93 93
94 our @EXPORT = qw(to_json from_json objToJson jsonToObj); 94 our @EXPORT = qw(to_json from_json objToJson jsonToObj);
95 require Exporter; 95 require Exporter;
96 96
154 154
155If C<$enable> is true (or missing), then the C<encode> method will not 155If C<$enable> is true (or missing), then the C<encode> method will not
156generate characters outside the code range C<0..127> (which is ASCII). Any 156generate characters outside the code range C<0..127> (which is ASCII). Any
157unicode characters outside that range will be escaped using either a 157unicode characters outside that range will be escaped using either a
158single \uXXXX (BMP characters) or a double \uHHHH\uLLLLL escape sequence, 158single \uXXXX (BMP characters) or a double \uHHHH\uLLLLL escape sequence,
159as per RFC4627. 159as per RFC4627. The resulting encoded JSON text can be treated as a native
160unicode string, an ascii-encoded, latin1-encoded or UTF-8 encoded string,
161or any other superset of ASCII.
160 162
161If C<$enable> is false, then the C<encode> method will not escape Unicode 163If C<$enable> is false, then the C<encode> method will not escape Unicode
162characters unless required by the JSON syntax. This results in a faster 164characters unless required by the JSON syntax. This results in a faster
163and more compact format. 165and more compact format.
164 166
309strings that look like integers or floats into integers or floats 311strings that look like integers or floats into integers or floats
310internally (there is no difference on the Perl level), saving space. 312internally (there is no difference on the Perl level), saving space.
311 313
312=item $json = $json->max_depth ([$maximum_nesting_depth]) 314=item $json = $json->max_depth ([$maximum_nesting_depth])
313 315
314Sets the maximum nesting level (default C<4096>) accepted while encoding 316Sets the maximum nesting level (default C<512>) accepted while encoding
315or decoding. If the JSON text or Perl data structure has an equal or 317or decoding. If the JSON text or Perl data structure has an equal or
316higher nesting level then this limit, then the encoder and decoder will 318higher nesting level then this limit, then the encoder and decoder will
317stop and croak at that point. 319stop and croak at that point.
318 320
319Nesting level is defined by number of hash- or arrayrefs that the encoder 321Nesting level is defined by number of hash- or arrayrefs that the encoder
632usually a good indication of the size of the resources required to decode 634usually a good indication of the size of the resources required to decode
633it into a Perl structure. 635it into a Perl structure.
634 636
635Third, JSON::XS recurses using the C stack when decoding objects and 637Third, JSON::XS recurses using the C stack when decoding objects and
636arrays. The C stack is a limited resource: for instance, on my amd64 638arrays. The C stack is a limited resource: for instance, on my amd64
637machine with 8MB of stack size I can decode around 180k nested arrays 639machine with 8MB of stack size I can decode around 180k nested arrays but
638but only 14k nested JSON objects. If that is exceeded, the program 640only 14k nested JSON objects (due to perl itself recursing deeply on croak
639crashes. Thats why the default nesting limit is set to 4096. If your 641to free the temporary). If that is exceeded, the program crashes. to be
642conservative, the default nesting limit is set to 512. If your process
640process has a smaller stack, you should adjust this setting accordingly 643has a smaller stack, you should adjust this setting accordingly with the
641with the C<max_depth> method. 644C<max_depth> method.
642 645
643And last but least, something else could bomb you that I forgot to think 646And last but least, something else could bomb you that I forgot to think
644of. In that case, you get to keep the pieces. I am alway sopen for hints, 647of. In that case, you get to keep the pieces. I am always open for hints,
645though... 648though...
646 649
647 650
648=head1 BUGS 651=head1 BUGS
649 652

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines