… | |
… | |
40 | Beginning with version 2.0 of the JSON module, when both JSON and |
40 | Beginning with version 2.0 of the JSON module, when both JSON and |
41 | JSON::XS are installed, then JSON will fall back on JSON::XS (this can be |
41 | JSON::XS are installed, then JSON will fall back on JSON::XS (this can be |
42 | overridden) with no overhead due to emulation (by inheriting constructor |
42 | overridden) with no overhead due to emulation (by inheriting constructor |
43 | and methods). If JSON::XS is not available, it will fall back to the |
43 | and methods). If JSON::XS is not available, it will fall back to the |
44 | compatible JSON::PP module as backend, so using JSON instead of JSON::XS |
44 | compatible JSON::PP module as backend, so using JSON instead of JSON::XS |
45 | gives you a portable JSON API that can be fast when you need and doesn't |
45 | gives you a portable JSON API that can be fast when you need it and |
46 | require a C compiler when that is a problem. |
46 | doesn't require a C compiler when that is a problem. |
47 | |
47 | |
48 | As this is the n-th-something JSON module on CPAN, what was the reason |
48 | As this is the n-th-something JSON module on CPAN, what was the reason |
49 | to write yet another JSON module? While it seems there are many JSON |
49 | to write yet another JSON module? While it seems there are many JSON |
50 | modules, none of them correctly handle all corner cases, and in most cases |
50 | modules, none of them correctly handle all corner cases, and in most cases |
51 | their maintainers are unresponsive, gone missing, or not listening to bug |
51 | their maintainers are unresponsive, gone missing, or not listening to bug |
… | |
… | |
101 | |
101 | |
102 | package JSON::XS; |
102 | package JSON::XS; |
103 | |
103 | |
104 | use common::sense; |
104 | use common::sense; |
105 | |
105 | |
106 | our $VERSION = 3.02; |
106 | our $VERSION = 3.03; |
107 | our @ISA = qw(Exporter); |
107 | our @ISA = qw(Exporter); |
108 | |
108 | |
109 | our @EXPORT = qw(encode_json decode_json); |
109 | our @EXPORT = qw(encode_json decode_json); |
110 | |
110 | |
111 | use Exporter; |
111 | use Exporter; |
… | |
… | |
768 | C<incr_parse> in I<scalar context> successfully returned an object. Under |
768 | C<incr_parse> in I<scalar context> successfully returned an object. Under |
769 | all other circumstances you must not call this function (I mean it. |
769 | all other circumstances you must not call this function (I mean it. |
770 | although in simple tests it might actually work, it I<will> fail under |
770 | although in simple tests it might actually work, it I<will> fail under |
771 | real world conditions). As a special exception, you can also call this |
771 | real world conditions). As a special exception, you can also call this |
772 | method before having parsed anything. |
772 | method before having parsed anything. |
|
|
773 | |
|
|
774 | That means you can only use this function to look at or manipulate text |
|
|
775 | before or after complete JSON objects, not while the parser is in the |
|
|
776 | middle of parsing a JSON object. |
773 | |
777 | |
774 | This function is useful in two cases: a) finding the trailing text after a |
778 | This function is useful in two cases: a) finding the trailing text after a |
775 | JSON object or b) parsing multiple JSON objects separated by non-JSON text |
779 | JSON object or b) parsing multiple JSON objects separated by non-JSON text |
776 | (such as commas). |
780 | (such as commas). |
777 | |
781 | |