OLD | NEW |
| (Empty) |
1 JSON version 2.58 | |
2 ================= | |
3 | |
4 "JSON::PP" was earlier included in the "JSON" distribution, | |
5 but has since Perl 5.14 been a core module. For this reason, | |
6 "JSON::PP" was removed from the "JSON" distribution and can | |
7 now be found also in the Perl5 repository at | |
8 | |
9 http://perl5.git.perl.org/perl.git | |
10 | |
11 (The newest "JSON::PP" version still exists in CPAN.) | |
12 | |
13 Instead, the "JSON" distribution will include "JSON::backportPP" | |
14 for backwards computability. JSON.pm should thus work as it did before. | |
15 | |
16 ================= | |
17 | |
18 INSTALLATION | |
19 | |
20 To install this module type the following: | |
21 | |
22 perl Makefile.PL | |
23 make | |
24 make test | |
25 make install | |
26 | |
27 if you use cpanm, can install JSON::XS at once. | |
28 | |
29 cpanm --with-recommends JSON | |
30 | |
31 | |
32 NAME | |
33 JSON - JSON (JavaScript Object Notation) encoder/decoder | |
34 | |
35 SYNOPSIS | |
36 use JSON; # imports encode_json, decode_json, to_json and from_json. | |
37 | |
38 # simple and fast interfaces (expect/generate UTF-8) | |
39 | |
40 $utf8_encoded_json_text = encode_json $perl_hash_or_arrayref; | |
41 $perl_hash_or_arrayref = decode_json $utf8_encoded_json_text; | |
42 | |
43 # OO-interface | |
44 | |
45 $json = JSON->new->allow_nonref; | |
46 | |
47 $json_text = $json->encode( $perl_scalar ); | |
48 $perl_scalar = $json->decode( $json_text ); | |
49 | |
50 $pretty_printed = $json->pretty->encode( $perl_scalar ); # pretty-printing | |
51 | |
52 # If you want to use PP only support features, call with '-support_by_pp' | |
53 # When XS unsupported feature is enable, using PP (de|en)code instead of XS
ones. | |
54 | |
55 use JSON -support_by_pp; | |
56 | |
57 # option-acceptable interfaces (expect/generate UNICODE by default) | |
58 | |
59 $json_text = to_json( $perl_scalar, { ascii => 1, pretty => 1 } ); | |
60 $perl_scalar = from_json( $json_text, { utf8 => 1 } ); | |
61 | |
62 # Between (en|de)code_json and (to|from)_json, if you want to write | |
63 # a code which communicates to an outer world (encoded in UTF-8), | |
64 # recommend to use (en|de)code_json. | |
65 | |
66 VERSION | |
67 2.58 | |
68 | |
69 This version is compatible with JSON::XS 2.27 and later. | |
70 | |
71 NOTE | |
72 JSON::PP was earlier included in the "JSON" distribution, but has since | |
73 Perl 5.14 been a core module. For this reason, JSON::PP was removed from | |
74 the JSON distribution and can now be found also in the Perl5 repository | |
75 at | |
76 | |
77 * <http://perl5.git.perl.org/perl.git> | |
78 | |
79 (The newest JSON::PP version still exists in CPAN.) | |
80 | |
81 Instead, the "JSON" distribution will include JSON::backportPP for | |
82 backwards computability. JSON.pm should thus work as it did before. | |
83 | |
84 DESCRIPTION | |
85 ************************** CAUTION ******************************** | |
86 * This is 'JSON module version 2' and there are many differences * | |
87 * to version 1.xx * | |
88 * Please check your applications using old version. * | |
89 * See to 'INCOMPATIBLE CHANGES TO OLD VERSION' * | |
90 ******************************************************************* | |
91 | |
92 JSON (JavaScript Object Notation) is a simple data format. See to | |
93 <http://www.json.org/> and | |
94 "RFC4627"(<http://www.ietf.org/rfc/rfc4627.txt>). | |
95 | |
96 This module converts Perl data structures to JSON and vice versa using | |
97 either JSON::XS or JSON::PP. | |
98 | |
99 JSON::XS is the fastest and most proper JSON module on CPAN which must | |
100 be compiled and installed in your environment. JSON::PP is a pure-Perl | |
101 module which is bundled in this distribution and has a strong | |
102 compatibility to JSON::XS. | |
103 | |
104 This module try to use JSON::XS by default and fail to it, use JSON::PP | |
105 instead. So its features completely depend on JSON::XS or JSON::PP. | |
106 | |
107 See to "BACKEND MODULE DECISION". | |
108 | |
109 To distinguish the module name 'JSON' and the format type JSON, the | |
110 former is quoted by C<> (its results vary with your using media), and | |
111 the latter is left just as it is. | |
112 | |
113 Module name : "JSON" | |
114 | |
115 Format type : JSON | |
116 | |
117 FEATURES | |
118 * correct unicode handling | |
119 | |
120 This module (i.e. backend modules) knows how to handle Unicode, | |
121 documents how and when it does so, and even documents what "correct" | |
122 means. | |
123 | |
124 Even though there are limitations, this feature is available since | |
125 Perl version 5.6. | |
126 | |
127 JSON::XS requires Perl 5.8.2 (but works correctly in 5.8.8 or | |
128 later), so in older versions "JSON" should call JSON::PP as the | |
129 backend which can be used since Perl 5.005. | |
130 | |
131 With Perl 5.8.x JSON::PP works, but from 5.8.0 to 5.8.2, because of | |
132 a Perl side problem, JSON::PP works slower in the versions. And in | |
133 5.005, the Unicode handling is not available. See to "UNICODE | |
134 HANDLING ON PERLS" in JSON::PP for more information. | |
135 | |
136 See also to "A FEW NOTES ON UNICODE AND PERL" in JSON::XS and | |
137 "ENCODING/CODESET_FLAG_NOTES" in JSON::XS. | |
138 | |
139 * round-trip integrity | |
140 | |
141 When you serialise a perl data structure using only data types | |
142 supported by JSON and Perl, the deserialised data structure is | |
143 identical on the Perl level. (e.g. the string "2.0" doesn't suddenly | |
144 become "2" just because it looks like a number). There *are* minor | |
145 exceptions to this, read the "MAPPING" section below to learn about | |
146 those. | |
147 | |
148 * strict checking of JSON correctness | |
149 | |
150 There is no guessing, no generating of illegal JSON texts by | |
151 default, and only JSON is accepted as input by default (the latter | |
152 is a security feature). | |
153 | |
154 See to "FEATURES" in JSON::XS and "FEATURES" in JSON::PP. | |
155 | |
156 * fast | |
157 | |
158 This module returns a JSON::XS object itself if available. Compared | |
159 to other JSON modules and other serialisers such as Storable, | |
160 JSON::XS usually compares favorably in terms of speed, too. | |
161 | |
162 If not available, "JSON" returns a JSON::PP object instead of | |
163 JSON::XS and it is very slow as pure-Perl. | |
164 | |
165 * simple to use | |
166 | |
167 This module has both a simple functional interface as well as an | |
168 object oriented interface interface. | |
169 | |
170 * reasonably versatile output formats | |
171 | |
172 You can choose between the most compact guaranteed-single-line | |
173 format possible (nice for simple line-based protocols), a pure-ASCII | |
174 format (for when your transport is not 8-bit clean, still supports | |
175 the whole Unicode range), or a pretty-printed format (for when you | |
176 want to read that stuff). Or you can combine those features in | |
177 whatever way you like. | |
178 | |
179 FUNCTIONAL INTERFACE | |
180 Some documents are copied and modified from "FUNCTIONAL INTERFACE" in | |
181 JSON::XS. "to_json" and "from_json" are additional functions. | |
182 | |
183 encode_json | |
184 $json_text = encode_json $perl_scalar | |
185 | |
186 Converts the given Perl data structure to a UTF-8 encoded, binary | |
187 string. | |
188 | |
189 This function call is functionally identical to: | |
190 | |
191 $json_text = JSON->new->utf8->encode($perl_scalar) | |
192 | |
193 decode_json | |
194 $perl_scalar = decode_json $json_text | |
195 | |
196 The opposite of "encode_json": expects an UTF-8 (binary) string and | |
197 tries to parse that as an UTF-8 encoded JSON text, returning the | |
198 resulting reference. | |
199 | |
200 This function call is functionally identical to: | |
201 | |
202 $perl_scalar = JSON->new->utf8->decode($json_text) | |
203 | |
204 to_json | |
205 $json_text = to_json($perl_scalar) | |
206 | |
207 Converts the given Perl data structure to a json string. | |
208 | |
209 This function call is functionally identical to: | |
210 | |
211 $json_text = JSON->new->encode($perl_scalar) | |
212 | |
213 Takes a hash reference as the second. | |
214 | |
215 $json_text = to_json($perl_scalar, $flag_hashref) | |
216 | |
217 So, | |
218 | |
219 $json_text = to_json($perl_scalar, {utf8 => 1, pretty => 1}) | |
220 | |
221 equivalent to: | |
222 | |
223 $json_text = JSON->new->utf8(1)->pretty(1)->encode($perl_scalar) | |
224 | |
225 If you want to write a modern perl code which communicates to outer | |
226 world, you should use "encode_json" (supposed that JSON data are encoded | |
227 in UTF-8). | |
228 | |
229 from_json | |
230 $perl_scalar = from_json($json_text) | |
231 | |
232 The opposite of "to_json": expects a json string and tries to parse it, | |
233 returning the resulting reference. | |
234 | |
235 This function call is functionally identical to: | |
236 | |
237 $perl_scalar = JSON->decode($json_text) | |
238 | |
239 Takes a hash reference as the second. | |
240 | |
241 $perl_scalar = from_json($json_text, $flag_hashref) | |
242 | |
243 So, | |
244 | |
245 $perl_scalar = from_json($json_text, {utf8 => 1}) | |
246 | |
247 equivalent to: | |
248 | |
249 $perl_scalar = JSON->new->utf8(1)->decode($json_text) | |
250 | |
251 If you want to write a modern perl code which communicates to outer | |
252 world, you should use "decode_json" (supposed that JSON data are encoded | |
253 in UTF-8). | |
254 | |
255 JSON::is_bool | |
256 $is_boolean = JSON::is_bool($scalar) | |
257 | |
258 Returns true if the passed scalar represents either JSON::true or | |
259 JSON::false, two constants that act like 1 and 0 respectively and are | |
260 also used to represent JSON "true" and "false" in Perl strings. | |
261 | |
262 JSON::true | |
263 Returns JSON true value which is blessed object. It "isa" JSON::Boolean | |
264 object. | |
265 | |
266 JSON::false | |
267 Returns JSON false value which is blessed object. It "isa" JSON::Boolean | |
268 object. | |
269 | |
270 JSON::null | |
271 Returns "undef". | |
272 | |
273 See MAPPING, below, for more information on how JSON values are mapped | |
274 to Perl. | |
275 | |
276 HOW DO I DECODE A DATA FROM OUTER AND ENCODE TO OUTER | |
277 This section supposes that your perl version is 5.8 or later. | |
278 | |
279 If you know a JSON text from an outer world - a network, a file content, | |
280 and so on, is encoded in UTF-8, you should use "decode_json" or "JSON" | |
281 module object with "utf8" enable. And the decoded result will contain | |
282 UNICODE characters. | |
283 | |
284 # from network | |
285 my $json = JSON->new->utf8; | |
286 my $json_text = CGI->new->param( 'json_data' ); | |
287 my $perl_scalar = $json->decode( $json_text ); | |
288 | |
289 # from file content | |
290 local $/; | |
291 open( my $fh, '<', 'json.data' ); | |
292 $json_text = <$fh>; | |
293 $perl_scalar = decode_json( $json_text ); | |
294 | |
295 If an outer data is not encoded in UTF-8, firstly you should "decode" | |
296 it. | |
297 | |
298 use Encode; | |
299 local $/; | |
300 open( my $fh, '<', 'json.data' ); | |
301 my $encoding = 'cp932'; | |
302 my $unicode_json_text = decode( $encoding, <$fh> ); # UNICODE | |
303 | |
304 # or you can write the below code. | |
305 # | |
306 # open( my $fh, "<:encoding($encoding)", 'json.data' ); | |
307 # $unicode_json_text = <$fh>; | |
308 | |
309 In this case, $unicode_json_text is of course UNICODE string. So you | |
310 cannot use "decode_json" nor "JSON" module object with "utf8" enable. | |
311 Instead of them, you use "JSON" module object with "utf8" disable or | |
312 "from_json". | |
313 | |
314 $perl_scalar = $json->utf8(0)->decode( $unicode_json_text ); | |
315 # or | |
316 $perl_scalar = from_json( $unicode_json_text ); | |
317 | |
318 Or "encode 'utf8'" and "decode_json": | |
319 | |
320 $perl_scalar = decode_json( encode( 'utf8', $unicode_json_text ) ); | |
321 # this way is not efficient. | |
322 | |
323 And now, you want to convert your $perl_scalar into JSON data and send | |
324 it to an outer world - a network or a file content, and so on. | |
325 | |
326 Your data usually contains UNICODE strings and you want the converted | |
327 data to be encoded in UTF-8, you should use "encode_json" or "JSON" | |
328 module object with "utf8" enable. | |
329 | |
330 print encode_json( $perl_scalar ); # to a network? file? or display? | |
331 # or | |
332 print $json->utf8->encode( $perl_scalar ); | |
333 | |
334 If $perl_scalar does not contain UNICODE but $encoding-encoded strings | |
335 for some reason, then its characters are regarded as latin1 for perl | |
336 (because it does not concern with your $encoding). You cannot use | |
337 "encode_json" nor "JSON" module object with "utf8" enable. Instead of | |
338 them, you use "JSON" module object with "utf8" disable or "to_json". | |
339 Note that the resulted text is a UNICODE string but no problem to print | |
340 it. | |
341 | |
342 # $perl_scalar contains $encoding encoded string values | |
343 $unicode_json_text = $json->utf8(0)->encode( $perl_scalar ); | |
344 # or | |
345 $unicode_json_text = to_json( $perl_scalar ); | |
346 # $unicode_json_text consists of characters less than 0x100 | |
347 print $unicode_json_text; | |
348 | |
349 Or "decode $encoding" all string values and "encode_json": | |
350 | |
351 $perl_scalar->{ foo } = decode( $encoding, $perl_scalar->{ foo } ); | |
352 # ... do it to each string values, then encode_json | |
353 $json_text = encode_json( $perl_scalar ); | |
354 | |
355 This method is a proper way but probably not efficient. | |
356 | |
357 See to Encode, perluniintro. | |
358 | |
359 COMMON OBJECT-ORIENTED INTERFACE | |
360 new | |
361 $json = JSON->new | |
362 | |
363 Returns a new "JSON" object inherited from either JSON::XS or JSON::PP | |
364 that can be used to de/encode JSON strings. | |
365 | |
366 All boolean flags described below are by default *disabled*. | |
367 | |
368 The mutators for flags all return the JSON object again and thus calls | |
369 can be chained: | |
370 | |
371 my $json = JSON->new->utf8->space_after->encode({a => [1,2]}) | |
372 => {"a": [1, 2]} | |
373 | |
374 ascii | |
375 $json = $json->ascii([$enable]) | |
376 | |
377 $enabled = $json->get_ascii | |
378 | |
379 If $enable is true (or missing), then the encode method will not | |
380 generate characters outside the code range 0..127. Any Unicode | |
381 characters outside that range will be escaped using either a single | |
382 \uXXXX or a double \uHHHH\uLLLLL escape sequence, as per RFC4627. | |
383 | |
384 If $enable is false, then the encode method will not escape Unicode | |
385 characters unless required by the JSON syntax or other flags. This | |
386 results in a faster and more compact format. | |
387 | |
388 This feature depends on the used Perl version and environment. | |
389 | |
390 See to "UNICODE HANDLING ON PERLS" in JSON::PP if the backend is PP. | |
391 | |
392 JSON->new->ascii(1)->encode([chr 0x10401]) | |
393 => ["\ud801\udc01"] | |
394 | |
395 latin1 | |
396 $json = $json->latin1([$enable]) | |
397 | |
398 $enabled = $json->get_latin1 | |
399 | |
400 If $enable is true (or missing), then the encode method will encode the | |
401 resulting JSON text as latin1 (or iso-8859-1), escaping any characters | |
402 outside the code range 0..255. | |
403 | |
404 If $enable is false, then the encode method will not escape Unicode | |
405 characters unless required by the JSON syntax or other flags. | |
406 | |
407 JSON->new->latin1->encode (["\x{89}\x{abc}"] | |
408 => ["\x{89}\\u0abc"] # (perl syntax, U+abc escaped, U+89 not) | |
409 | |
410 utf8 | |
411 $json = $json->utf8([$enable]) | |
412 | |
413 $enabled = $json->get_utf8 | |
414 | |
415 If $enable is true (or missing), then the encode method will encode the | |
416 JSON result into UTF-8, as required by many protocols, while the decode | |
417 method expects to be handled an UTF-8-encoded string. Please note that | |
418 UTF-8-encoded strings do not contain any characters outside the range | |
419 0..255, they are thus useful for bytewise/binary I/O. | |
420 | |
421 In future versions, enabling this option might enable autodetection of | |
422 the UTF-16 and UTF-32 encoding families, as described in RFC4627. | |
423 | |
424 If $enable is false, then the encode method will return the JSON string | |
425 as a (non-encoded) Unicode string, while decode expects thus a Unicode | |
426 string. Any decoding or encoding (e.g. to UTF-8 or UTF-16) needs to be | |
427 done yourself, e.g. using the Encode module. | |
428 | |
429 Example, output UTF-16BE-encoded JSON: | |
430 | |
431 use Encode; | |
432 $jsontext = encode "UTF-16BE", JSON::XS->new->encode ($object); | |
433 | |
434 Example, decode UTF-32LE-encoded JSON: | |
435 | |
436 use Encode; | |
437 $object = JSON::XS->new->decode (decode "UTF-32LE", $jsontext); | |
438 | |
439 See to "UNICODE HANDLING ON PERLS" in JSON::PP if the backend is PP. | |
440 | |
441 pretty | |
442 $json = $json->pretty([$enable]) | |
443 | |
444 This enables (or disables) all of the "indent", "space_before" and | |
445 "space_after" (and in the future possibly more) flags in one call to | |
446 generate the most readable (or most compact) form possible. | |
447 | |
448 Equivalent to: | |
449 | |
450 $json->indent->space_before->space_after | |
451 | |
452 The indent space length is three and JSON::XS cannot change the indent | |
453 space length. | |
454 | |
455 indent | |
456 $json = $json->indent([$enable]) | |
457 | |
458 $enabled = $json->get_indent | |
459 | |
460 If $enable is true (or missing), then the "encode" method will use a | |
461 multiline format as output, putting every array member or object/hash | |
462 key-value pair into its own line, identifying them properly. | |
463 | |
464 If $enable is false, no newlines or indenting will be produced, and the | |
465 resulting JSON text is guaranteed not to contain any "newlines". | |
466 | |
467 This setting has no effect when decoding JSON texts. | |
468 | |
469 The indent space length is three. With JSON::PP, you can also access | |
470 "indent_length" to change indent space length. | |
471 | |
472 space_before | |
473 $json = $json->space_before([$enable]) | |
474 | |
475 $enabled = $json->get_space_before | |
476 | |
477 If $enable is true (or missing), then the "encode" method will add an | |
478 extra optional space before the ":" separating keys from values in JSON | |
479 objects. | |
480 | |
481 If $enable is false, then the "encode" method will not add any extra | |
482 space at those places. | |
483 | |
484 This setting has no effect when decoding JSON texts. | |
485 | |
486 Example, space_before enabled, space_after and indent disabled: | |
487 | |
488 {"key" :"value"} | |
489 | |
490 space_after | |
491 $json = $json->space_after([$enable]) | |
492 | |
493 $enabled = $json->get_space_after | |
494 | |
495 If $enable is true (or missing), then the "encode" method will add an | |
496 extra optional space after the ":" separating keys from values in JSON | |
497 objects and extra whitespace after the "," separating key-value pairs | |
498 and array members. | |
499 | |
500 If $enable is false, then the "encode" method will not add any extra | |
501 space at those places. | |
502 | |
503 This setting has no effect when decoding JSON texts. | |
504 | |
505 Example, space_before and indent disabled, space_after enabled: | |
506 | |
507 {"key": "value"} | |
508 | |
509 relaxed | |
510 $json = $json->relaxed([$enable]) | |
511 | |
512 $enabled = $json->get_relaxed | |
513 | |
514 If $enable is true (or missing), then "decode" will accept some | |
515 extensions to normal JSON syntax (see below). "encode" will not be | |
516 affected in anyway. *Be aware that this option makes you accept invalid | |
517 JSON texts as if they were valid!*. I suggest only to use this option to | |
518 parse application-specific files written by humans (configuration files, | |
519 resource files etc.) | |
520 | |
521 If $enable is false (the default), then "decode" will only accept valid | |
522 JSON texts. | |
523 | |
524 Currently accepted extensions are: | |
525 | |
526 * list items can have an end-comma | |
527 | |
528 JSON *separates* array elements and key-value pairs with commas. | |
529 This can be annoying if you write JSON texts manually and want to be | |
530 able to quickly append elements, so this extension accepts comma at | |
531 the end of such items not just between them: | |
532 | |
533 [ | |
534 1, | |
535 2, <- this comma not normally allowed | |
536 ] | |
537 { | |
538 "k1": "v1", | |
539 "k2": "v2", <- this comma not normally allowed | |
540 } | |
541 | |
542 * shell-style '#'-comments | |
543 | |
544 Whenever JSON allows whitespace, shell-style comments are | |
545 additionally allowed. They are terminated by the first | |
546 carriage-return or line-feed character, after which more white-space | |
547 and comments are allowed. | |
548 | |
549 [ | |
550 1, # this comment not allowed in JSON | |
551 # neither this one... | |
552 ] | |
553 | |
554 canonical | |
555 $json = $json->canonical([$enable]) | |
556 | |
557 $enabled = $json->get_canonical | |
558 | |
559 If $enable is true (or missing), then the "encode" method will output | |
560 JSON objects by sorting their keys. This is adding a comparatively high | |
561 overhead. | |
562 | |
563 If $enable is false, then the "encode" method will output key-value | |
564 pairs in the order Perl stores them (which will likely change between | |
565 runs of the same script). | |
566 | |
567 This option is useful if you want the same data structure to be encoded | |
568 as the same JSON text (given the same overall settings). If it is | |
569 disabled, the same hash might be encoded differently even if contains | |
570 the same data, as key-value pairs have no inherent ordering in Perl. | |
571 | |
572 This setting has no effect when decoding JSON texts. | |
573 | |
574 allow_nonref | |
575 $json = $json->allow_nonref([$enable]) | |
576 | |
577 $enabled = $json->get_allow_nonref | |
578 | |
579 If $enable is true (or missing), then the "encode" method can convert a | |
580 non-reference into its corresponding string, number or null JSON value, | |
581 which is an extension to RFC4627. Likewise, "decode" will accept those | |
582 JSON values instead of croaking. | |
583 | |
584 If $enable is false, then the "encode" method will croak if it isn't | |
585 passed an arrayref or hashref, as JSON texts must either be an object or | |
586 array. Likewise, "decode" will croak if given something that is not a | |
587 JSON object or array. | |
588 | |
589 JSON->new->allow_nonref->encode ("Hello, World!") | |
590 => "Hello, World!" | |
591 | |
592 allow_unknown | |
593 $json = $json->allow_unknown ([$enable]) | |
594 | |
595 $enabled = $json->get_allow_unknown | |
596 | |
597 If $enable is true (or missing), then "encode" will *not* throw an | |
598 exception when it encounters values it cannot represent in JSON (for | |
599 example, filehandles) but instead will encode a JSON "null" value. Note | |
600 that blessed objects are not included here and are handled separately by | |
601 c<allow_nonref>. | |
602 | |
603 If $enable is false (the default), then "encode" will throw an exception | |
604 when it encounters anything it cannot encode as JSON. | |
605 | |
606 This option does not affect "decode" in any way, and it is recommended | |
607 to leave it off unless you know your communications partner. | |
608 | |
609 allow_blessed | |
610 $json = $json->allow_blessed([$enable]) | |
611 | |
612 $enabled = $json->get_allow_blessed | |
613 | |
614 If $enable is true (or missing), then the "encode" method will not barf | |
615 when it encounters a blessed reference. Instead, the value of the | |
616 convert_blessed option will decide whether "null" ("convert_blessed" | |
617 disabled or no "TO_JSON" method found) or a representation of the object | |
618 ("convert_blessed" enabled and "TO_JSON" method found) is being encoded. | |
619 Has no effect on "decode". | |
620 | |
621 If $enable is false (the default), then "encode" will throw an exception | |
622 when it encounters a blessed object. | |
623 | |
624 convert_blessed | |
625 $json = $json->convert_blessed([$enable]) | |
626 | |
627 $enabled = $json->get_convert_blessed | |
628 | |
629 If $enable is true (or missing), then "encode", upon encountering a | |
630 blessed object, will check for the availability of the "TO_JSON" method | |
631 on the object's class. If found, it will be called in scalar context and | |
632 the resulting scalar will be encoded instead of the object. If no | |
633 "TO_JSON" method is found, the value of "allow_blessed" will decide what | |
634 to do. | |
635 | |
636 The "TO_JSON" method may safely call die if it wants. If "TO_JSON" | |
637 returns other blessed objects, those will be handled in the same way. | |
638 "TO_JSON" must take care of not causing an endless recursion cycle (== | |
639 crash) in this case. The name of "TO_JSON" was chosen because other | |
640 methods called by the Perl core (== not by the user of the object) are | |
641 usually in upper case letters and to avoid collisions with the "to_json" | |
642 function or method. | |
643 | |
644 This setting does not yet influence "decode" in any way. | |
645 | |
646 If $enable is false, then the "allow_blessed" setting will decide what | |
647 to do when a blessed object is found. | |
648 | |
649 convert_blessed_universally mode | |
650 If use "JSON" with "-convert_blessed_universally", the | |
651 "UNIVERSAL::TO_JSON" subroutine is defined as the below code: | |
652 | |
653 *UNIVERSAL::TO_JSON = sub { | |
654 my $b_obj = B::svref_2object( $_[0] ); | |
655 return $b_obj->isa('B::HV') ? { %{ $_[0] } } | |
656 : $b_obj->isa('B::AV') ? [ @{ $_[0] } ] | |
657 : undef | |
658 ; | |
659 } | |
660 | |
661 This will cause that "encode" method converts simple blessed objects | |
662 into JSON objects as non-blessed object. | |
663 | |
664 JSON -convert_blessed_universally; | |
665 $json->allow_blessed->convert_blessed->encode( $blessed_object ) | |
666 | |
667 This feature is experimental and may be removed in the future. | |
668 | |
669 filter_json_object | |
670 $json = $json->filter_json_object([$coderef]) | |
671 | |
672 When $coderef is specified, it will be called from "decode" each time it | |
673 decodes a JSON object. The only argument passed to the coderef is a | |
674 reference to the newly-created hash. If the code references returns a | |
675 single scalar (which need not be a reference), this value (i.e. a copy | |
676 of that scalar to avoid aliasing) is inserted into the deserialised data | |
677 structure. If it returns an empty list (NOTE: *not* "undef", which is a | |
678 valid scalar), the original deserialised hash will be inserted. This | |
679 setting can slow down decoding considerably. | |
680 | |
681 When $coderef is omitted or undefined, any existing callback will be | |
682 removed and "decode" will not change the deserialised hash in any way. | |
683 | |
684 Example, convert all JSON objects into the integer 5: | |
685 | |
686 my $js = JSON->new->filter_json_object (sub { 5 }); | |
687 # returns [5] | |
688 $js->decode ('[{}]'); # the given subroutine takes a hash reference. | |
689 # throw an exception because allow_nonref is not enabled | |
690 # so a lone 5 is not allowed. | |
691 $js->decode ('{"a":1, "b":2}'); | |
692 | |
693 filter_json_single_key_object | |
694 $json = $json->filter_json_single_key_object($key [=> $coderef]) | |
695 | |
696 Works remotely similar to "filter_json_object", but is only called for | |
697 JSON objects having a single key named $key. | |
698 | |
699 This $coderef is called before the one specified via | |
700 "filter_json_object", if any. It gets passed the single value in the | |
701 JSON object. If it returns a single value, it will be inserted into the | |
702 data structure. If it returns nothing (not even "undef" but the empty | |
703 list), the callback from "filter_json_object" will be called next, as if | |
704 no single-key callback were specified. | |
705 | |
706 If $coderef is omitted or undefined, the corresponding callback will be | |
707 disabled. There can only ever be one callback for a given key. | |
708 | |
709 As this callback gets called less often then the "filter_json_object" | |
710 one, decoding speed will not usually suffer as much. Therefore, | |
711 single-key objects make excellent targets to serialise Perl objects | |
712 into, especially as single-key JSON objects are as close to the | |
713 type-tagged value concept as JSON gets (it's basically an ID/VALUE | |
714 tuple). Of course, JSON does not support this in any way, so you need to | |
715 make sure your data never looks like a serialised Perl hash. | |
716 | |
717 Typical names for the single object key are "__class_whatever__", or | |
718 "$__dollars_are_rarely_used__$" or "}ugly_brace_placement", or even | |
719 things like "__class_md5sum(classname)__", to reduce the risk of | |
720 clashing with real hashes. | |
721 | |
722 Example, decode JSON objects of the form "{ "__widget__" => <id> }" into | |
723 the corresponding $WIDGET{<id>} object: | |
724 | |
725 # return whatever is in $WIDGET{5}: | |
726 JSON | |
727 ->new | |
728 ->filter_json_single_key_object (__widget__ => sub { | |
729 $WIDGET{ $_[0] } | |
730 }) | |
731 ->decode ('{"__widget__": 5') | |
732 | |
733 # this can be used with a TO_JSON method in some "widget" class | |
734 # for serialisation to json: | |
735 sub WidgetBase::TO_JSON { | |
736 my ($self) = @_; | |
737 | |
738 unless ($self->{id}) { | |
739 $self->{id} = ..get..some..id..; | |
740 $WIDGET{$self->{id}} = $self; | |
741 } | |
742 | |
743 { __widget__ => $self->{id} } | |
744 } | |
745 | |
746 shrink | |
747 $json = $json->shrink([$enable]) | |
748 | |
749 $enabled = $json->get_shrink | |
750 | |
751 With JSON::XS, this flag resizes strings generated by either "encode" or | |
752 "decode" to their minimum size possible. This can save memory when your | |
753 JSON texts are either very very long or you have many short strings. It | |
754 will also try to downgrade any strings to octet-form if possible: perl | |
755 stores strings internally either in an encoding called UTF-X or in | |
756 octet-form. The latter cannot store everything but uses less space in | |
757 general (and some buggy Perl or C code might even rely on that internal | |
758 representation being used). | |
759 | |
760 With JSON::PP, it is noop about resizing strings but tries | |
761 "utf8::downgrade" to the returned string by "encode". See to utf8. | |
762 | |
763 See to "OBJECT-ORIENTED INTERFACE" in JSON::XS and "METHODS" in | |
764 JSON::PP. | |
765 | |
766 max_depth | |
767 $json = $json->max_depth([$maximum_nesting_depth]) | |
768 | |
769 $max_depth = $json->get_max_depth | |
770 | |
771 Sets the maximum nesting level (default 512) accepted while encoding or | |
772 decoding. If a higher nesting level is detected in JSON text or a Perl | |
773 data structure, then the encoder and decoder will stop and croak at that | |
774 point. | |
775 | |
776 Nesting level is defined by number of hash- or arrayrefs that the | |
777 encoder needs to traverse to reach a given point or the number of "{" or | |
778 "[" characters without their matching closing parenthesis crossed to | |
779 reach a given character in a string. | |
780 | |
781 If no argument is given, the highest possible setting will be used, | |
782 which is rarely useful. | |
783 | |
784 Note that nesting is implemented by recursion in C. The default value | |
785 has been chosen to be as large as typical operating systems allow | |
786 without crashing. (JSON::XS) | |
787 | |
788 With JSON::PP as the backend, when a large value (100 or more) was set | |
789 and it de/encodes a deep nested object/text, it may raise a warning | |
790 'Deep recursion on subroutine' at the perl runtime phase. | |
791 | |
792 See "SECURITY CONSIDERATIONS" in JSON::XS for more info on why this is | |
793 useful. | |
794 | |
795 max_size | |
796 $json = $json->max_size([$maximum_string_size]) | |
797 | |
798 $max_size = $json->get_max_size | |
799 | |
800 Set the maximum length a JSON text may have (in bytes) where decoding is | |
801 being attempted. The default is 0, meaning no limit. When "decode" is | |
802 called on a string that is longer then this many bytes, it will not | |
803 attempt to decode the string but throw an exception. This setting has no | |
804 effect on "encode" (yet). | |
805 | |
806 If no argument is given, the limit check will be deactivated (same as | |
807 when 0 is specified). | |
808 | |
809 See "SECURITY CONSIDERATIONS" in JSON::XS, below, for more info on why | |
810 this is useful. | |
811 | |
812 encode | |
813 $json_text = $json->encode($perl_scalar) | |
814 | |
815 Converts the given Perl data structure (a simple scalar or a reference | |
816 to a hash or array) to its JSON representation. Simple scalars will be | |
817 converted into JSON string or number sequences, while references to | |
818 arrays become JSON arrays and references to hashes become JSON objects. | |
819 Undefined Perl values (e.g. "undef") become JSON "null" values. | |
820 References to the integers 0 and 1 are converted into "true" and | |
821 "false". | |
822 | |
823 decode | |
824 $perl_scalar = $json->decode($json_text) | |
825 | |
826 The opposite of "encode": expects a JSON text and tries to parse it, | |
827 returning the resulting simple scalar or reference. Croaks on error. | |
828 | |
829 JSON numbers and strings become simple Perl scalars. JSON arrays become | |
830 Perl arrayrefs and JSON objects become Perl hashrefs. "true" becomes 1 | |
831 ("JSON::true"), "false" becomes 0 ("JSON::false") and "null" becomes | |
832 "undef". | |
833 | |
834 decode_prefix | |
835 ($perl_scalar, $characters) = $json->decode_prefix($json_text) | |
836 | |
837 This works like the "decode" method, but instead of raising an exception | |
838 when there is trailing garbage after the first JSON object, it will | |
839 silently stop parsing there and return the number of characters consumed | |
840 so far. | |
841 | |
842 JSON->new->decode_prefix ("[1] the tail") | |
843 => ([], 3) | |
844 | |
845 See to "OBJECT-ORIENTED INTERFACE" in JSON::XS | |
846 | |
847 property | |
848 $boolean = $json->property($property_name) | |
849 | |
850 Returns a boolean value about above some properties. | |
851 | |
852 The available properties are "ascii", "latin1", "utf8", | |
853 "indent","space_before", "space_after", "relaxed", "canonical", | |
854 "allow_nonref", "allow_unknown", "allow_blessed", "convert_blessed", | |
855 "shrink", "max_depth" and "max_size". | |
856 | |
857 $boolean = $json->property('utf8'); | |
858 => 0 | |
859 $json->utf8; | |
860 $boolean = $json->property('utf8'); | |
861 => 1 | |
862 | |
863 Sets the property with a given boolean value. | |
864 | |
865 $json = $json->property($property_name => $boolean); | |
866 | |
867 With no argument, it returns all the above properties as a hash | |
868 reference. | |
869 | |
870 $flag_hashref = $json->property(); | |
871 | |
872 INCREMENTAL PARSING | |
873 Most of this section are copied and modified from "INCREMENTAL PARSING" | |
874 in JSON::XS. | |
875 | |
876 In some cases, there is the need for incremental parsing of JSON texts. | |
877 This module does allow you to parse a JSON stream incrementally. It does | |
878 so by accumulating text until it has a full JSON object, which it then | |
879 can decode. This process is similar to using "decode_prefix" to see if a | |
880 full JSON object is available, but is much more efficient (and can be | |
881 implemented with a minimum of method calls). | |
882 | |
883 The backend module will only attempt to parse the JSON text once it is | |
884 sure it has enough text to get a decisive result, using a very simple | |
885 but truly incremental parser. This means that it sometimes won't stop as | |
886 early as the full parser, for example, it doesn't detect parenthesis | |
887 mismatches. The only thing it guarantees is that it starts decoding as | |
888 soon as a syntactically valid JSON text has been seen. This means you | |
889 need to set resource limits (e.g. "max_size") to ensure the parser will | |
890 stop parsing in the presence if syntax errors. | |
891 | |
892 The following methods implement this incremental parser. | |
893 | |
894 incr_parse | |
895 $json->incr_parse( [$string] ) # void context | |
896 | |
897 $obj_or_undef = $json->incr_parse( [$string] ) # scalar context | |
898 | |
899 @obj_or_empty = $json->incr_parse( [$string] ) # list context | |
900 | |
901 This is the central parsing function. It can both append new text and | |
902 extract objects from the stream accumulated so far (both of these | |
903 functions are optional). | |
904 | |
905 If $string is given, then this string is appended to the already | |
906 existing JSON fragment stored in the $json object. | |
907 | |
908 After that, if the function is called in void context, it will simply | |
909 return without doing anything further. This can be used to add more text | |
910 in as many chunks as you want. | |
911 | |
912 If the method is called in scalar context, then it will try to extract | |
913 exactly *one* JSON object. If that is successful, it will return this | |
914 object, otherwise it will return "undef". If there is a parse error, | |
915 this method will croak just as "decode" would do (one can then use | |
916 "incr_skip" to skip the erroneous part). This is the most common way of | |
917 using the method. | |
918 | |
919 And finally, in list context, it will try to extract as many objects | |
920 from the stream as it can find and return them, or the empty list | |
921 otherwise. For this to work, there must be no separators between the | |
922 JSON objects or arrays, instead they must be concatenated back-to-back. | |
923 If an error occurs, an exception will be raised as in the scalar context | |
924 case. Note that in this case, any previously-parsed JSON texts will be | |
925 lost. | |
926 | |
927 Example: Parse some JSON arrays/objects in a given string and return | |
928 them. | |
929 | |
930 my @objs = JSON->new->incr_parse ("[5][7][1,2]"); | |
931 | |
932 incr_text | |
933 $lvalue_string = $json->incr_text | |
934 | |
935 This method returns the currently stored JSON fragment as an lvalue, | |
936 that is, you can manipulate it. This *only* works when a preceding call | |
937 to "incr_parse" in *scalar context* successfully returned an object. | |
938 Under all other circumstances you must not call this function (I mean | |
939 it. although in simple tests it might actually work, it *will* fail | |
940 under real world conditions). As a special exception, you can also call | |
941 this method before having parsed anything. | |
942 | |
943 This function is useful in two cases: a) finding the trailing text after | |
944 a JSON object or b) parsing multiple JSON objects separated by non-JSON | |
945 text (such as commas). | |
946 | |
947 $json->incr_text =~ s/\s*,\s*//; | |
948 | |
949 In Perl 5.005, "lvalue" attribute is not available. You must write codes | |
950 like the below: | |
951 | |
952 $string = $json->incr_text; | |
953 $string =~ s/\s*,\s*//; | |
954 $json->incr_text( $string ); | |
955 | |
956 incr_skip | |
957 $json->incr_skip | |
958 | |
959 This will reset the state of the incremental parser and will remove the | |
960 parsed text from the input buffer. This is useful after "incr_parse" | |
961 died, in which case the input buffer and incremental parser state is | |
962 left unchanged, to skip the text parsed so far and to reset the parse | |
963 state. | |
964 | |
965 incr_reset | |
966 $json->incr_reset | |
967 | |
968 This completely resets the incremental parser, that is, after this call, | |
969 it will be as if the parser had never parsed anything. | |
970 | |
971 This is useful if you want to repeatedly parse JSON objects and want to | |
972 ignore any trailing data, which means you have to reset the parser after | |
973 each successful decode. | |
974 | |
975 See to "INCREMENTAL PARSING" in JSON::XS for examples. | |
976 | |
977 JSON::PP SUPPORT METHODS | |
978 The below methods are JSON::PP own methods, so when "JSON" works with | |
979 JSON::PP (i.e. the created object is a JSON::PP object), available. See | |
980 to "JSON::PP OWN METHODS" in JSON::PP in detail. | |
981 | |
982 If you use "JSON" with additional "-support_by_pp", some methods are | |
983 available even with JSON::XS. See to "USE PP FEATURES EVEN THOUGH XS | |
984 BACKEND". | |
985 | |
986 BEING { $ENV{PERL_JSON_BACKEND} = 'JSON::XS' } | |
987 | |
988 use JSON -support_by_pp; | |
989 | |
990 my $json = JSON->new; | |
991 $json->allow_nonref->escape_slash->encode("/"); | |
992 | |
993 # functional interfaces too. | |
994 print to_json(["/"], {escape_slash => 1}); | |
995 print from_json('["foo"]', {utf8 => 1}); | |
996 | |
997 If you do not want to all functions but "-support_by_pp", use | |
998 "-no_export". | |
999 | |
1000 use JSON -support_by_pp, -no_export; | |
1001 # functional interfaces are not exported. | |
1002 | |
1003 allow_singlequote | |
1004 $json = $json->allow_singlequote([$enable]) | |
1005 | |
1006 If $enable is true (or missing), then "decode" will accept any JSON | |
1007 strings quoted by single quotations that are invalid JSON format. | |
1008 | |
1009 $json->allow_singlequote->decode({"foo":'bar'}); | |
1010 $json->allow_singlequote->decode({'foo':"bar"}); | |
1011 $json->allow_singlequote->decode({'foo':'bar'}); | |
1012 | |
1013 As same as the "relaxed" option, this option may be used to parse | |
1014 application-specific files written by humans. | |
1015 | |
1016 allow_barekey | |
1017 $json = $json->allow_barekey([$enable]) | |
1018 | |
1019 If $enable is true (or missing), then "decode" will accept bare keys of | |
1020 JSON object that are invalid JSON format. | |
1021 | |
1022 As same as the "relaxed" option, this option may be used to parse | |
1023 application-specific files written by humans. | |
1024 | |
1025 $json->allow_barekey->decode('{foo:"bar"}'); | |
1026 | |
1027 allow_bignum | |
1028 $json = $json->allow_bignum([$enable]) | |
1029 | |
1030 If $enable is true (or missing), then "decode" will convert the big | |
1031 integer Perl cannot handle as integer into a Math::BigInt object and | |
1032 convert a floating number (any) into a Math::BigFloat. | |
1033 | |
1034 On the contrary, "encode" converts "Math::BigInt" objects and | |
1035 "Math::BigFloat" objects into JSON numbers with "allow_blessed" enable. | |
1036 | |
1037 $json->allow_nonref->allow_blessed->allow_bignum; | |
1038 $bigfloat = $json->decode('2.000000000000000000000000001'); | |
1039 print $json->encode($bigfloat); | |
1040 # => 2.000000000000000000000000001 | |
1041 | |
1042 See to MAPPING about the conversion of JSON number. | |
1043 | |
1044 loose | |
1045 $json = $json->loose([$enable]) | |
1046 | |
1047 The unescaped [\x00-\x1f\x22\x2f\x5c] strings are invalid in JSON | |
1048 strings and the module doesn't allow to "decode" to these (except for | |
1049 \x2f). If $enable is true (or missing), then "decode" will accept these | |
1050 unescaped strings. | |
1051 | |
1052 $json->loose->decode(qq|["abc | |
1053 def"]|); | |
1054 | |
1055 See to "JSON::PP OWN METHODS" in JSON::PP. | |
1056 | |
1057 escape_slash | |
1058 $json = $json->escape_slash([$enable]) | |
1059 | |
1060 According to JSON Grammar, *slash* (U+002F) is escaped. But by default | |
1061 JSON backend modules encode strings without escaping slash. | |
1062 | |
1063 If $enable is true (or missing), then "encode" will escape slashes. | |
1064 | |
1065 indent_length | |
1066 $json = $json->indent_length($length) | |
1067 | |
1068 With JSON::XS, The indent space length is 3 and cannot be changed. With | |
1069 JSON::PP, it sets the indent space length with the given $length. The | |
1070 default is 3. The acceptable range is 0 to 15. | |
1071 | |
1072 sort_by | |
1073 $json = $json->sort_by($function_name) | |
1074 $json = $json->sort_by($subroutine_ref) | |
1075 | |
1076 If $function_name or $subroutine_ref are set, its sort routine are used. | |
1077 | |
1078 $js = $pc->sort_by(sub { $JSON::PP::a cmp $JSON::PP::b })->encode($obj); | |
1079 # is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|); | |
1080 | |
1081 $js = $pc->sort_by('own_sort')->encode($obj); | |
1082 # is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|); | |
1083 | |
1084 sub JSON::PP::own_sort { $JSON::PP::a cmp $JSON::PP::b } | |
1085 | |
1086 As the sorting routine runs in the JSON::PP scope, the given subroutine | |
1087 name and the special variables $a, $b will begin with 'JSON::PP::'. | |
1088 | |
1089 If $integer is set, then the effect is same as "canonical" on. | |
1090 | |
1091 See to "JSON::PP OWN METHODS" in JSON::PP. | |
1092 | |
1093 MAPPING | |
1094 This section is copied from JSON::XS and modified to "JSON". JSON::XS | |
1095 and JSON::PP mapping mechanisms are almost equivalent. | |
1096 | |
1097 See to "MAPPING" in JSON::XS. | |
1098 | |
1099 JSON -> PERL | |
1100 object | |
1101 A JSON object becomes a reference to a hash in Perl. No ordering of | |
1102 object keys is preserved (JSON does not preserver object key | |
1103 ordering itself). | |
1104 | |
1105 array | |
1106 A JSON array becomes a reference to an array in Perl. | |
1107 | |
1108 string | |
1109 A JSON string becomes a string scalar in Perl - Unicode codepoints | |
1110 in JSON are represented by the same codepoints in the Perl string, | |
1111 so no manual decoding is necessary. | |
1112 | |
1113 number | |
1114 A JSON number becomes either an integer, numeric (floating point) or | |
1115 string scalar in perl, depending on its range and any fractional | |
1116 parts. On the Perl level, there is no difference between those as | |
1117 Perl handles all the conversion details, but an integer may take | |
1118 slightly less memory and might represent more values exactly than | |
1119 floating point numbers. | |
1120 | |
1121 If the number consists of digits only, "JSON" will try to represent | |
1122 it as an integer value. If that fails, it will try to represent it | |
1123 as a numeric (floating point) value if that is possible without loss | |
1124 of precision. Otherwise it will preserve the number as a string | |
1125 value (in which case you lose roundtripping ability, as the JSON | |
1126 number will be re-encoded to a JSON string). | |
1127 | |
1128 Numbers containing a fractional or exponential part will always be | |
1129 represented as numeric (floating point) values, possibly at a loss | |
1130 of precision (in which case you might lose perfect roundtripping | |
1131 ability, but the JSON number will still be re-encoded as a JSON | |
1132 number). | |
1133 | |
1134 Note that precision is not accuracy - binary floating point values | |
1135 cannot represent most decimal fractions exactly, and when converting | |
1136 from and to floating point, "JSON" only guarantees precision up to | |
1137 but not including the least significant bit. | |
1138 | |
1139 If the backend is JSON::PP and "allow_bignum" is enable, the big | |
1140 integers and the numeric can be optionally converted into | |
1141 Math::BigInt and Math::BigFloat objects. | |
1142 | |
1143 true, false | |
1144 These JSON atoms become "JSON::true" and "JSON::false", | |
1145 respectively. They are overloaded to act almost exactly like the | |
1146 numbers 1 and 0. You can check whether a scalar is a JSON boolean by | |
1147 using the "JSON::is_bool" function. | |
1148 | |
1149 If "JSON::true" and "JSON::false" are used as strings or compared as | |
1150 strings, they represent as "true" and "false" respectively. | |
1151 | |
1152 print JSON::true . "\n"; | |
1153 => true | |
1154 print JSON::true + 1; | |
1155 => 1 | |
1156 | |
1157 ok(JSON::true eq 'true'); | |
1158 ok(JSON::true eq '1'); | |
1159 ok(JSON::true == 1); | |
1160 | |
1161 "JSON" will install these missing overloading features to the | |
1162 backend modules. | |
1163 | |
1164 null | |
1165 A JSON null atom becomes "undef" in Perl. | |
1166 | |
1167 "JSON::null" returns "undef". | |
1168 | |
1169 PERL -> JSON | |
1170 The mapping from Perl to JSON is slightly more difficult, as Perl is a | |
1171 truly typeless language, so we can only guess which JSON type is meant | |
1172 by a Perl value. | |
1173 | |
1174 hash references | |
1175 Perl hash references become JSON objects. As there is no inherent | |
1176 ordering in hash keys (or JSON objects), they will usually be | |
1177 encoded in a pseudo-random order that can change between runs of the | |
1178 same program but stays generally the same within a single run of a | |
1179 program. "JSON" optionally sort the hash keys (determined by the | |
1180 *canonical* flag), so the same data structure will serialise to the | |
1181 same JSON text (given same settings and version of JSON::XS), but | |
1182 this incurs a runtime overhead and is only rarely useful, e.g. when | |
1183 you want to compare some JSON text against another for equality. | |
1184 | |
1185 In future, the ordered object feature will be added to JSON::PP | |
1186 using "tie" mechanism. | |
1187 | |
1188 array references | |
1189 Perl array references become JSON arrays. | |
1190 | |
1191 other references | |
1192 Other unblessed references are generally not allowed and will cause | |
1193 an exception to be thrown, except for references to the integers 0 | |
1194 and 1, which get turned into "false" and "true" atoms in JSON. You | |
1195 can also use "JSON::false" and "JSON::true" to improve readability. | |
1196 | |
1197 to_json [\0,JSON::true] # yields [false,true] | |
1198 | |
1199 JSON::true, JSON::false, JSON::null | |
1200 These special values become JSON true and JSON false values, | |
1201 respectively. You can also use "\1" and "\0" directly if you want. | |
1202 | |
1203 JSON::null returns "undef". | |
1204 | |
1205 blessed objects | |
1206 Blessed objects are not directly representable in JSON. See the | |
1207 "allow_blessed" and "convert_blessed" methods on various options on | |
1208 how to deal with this: basically, you can choose between throwing an | |
1209 exception, encoding the reference as if it weren't blessed, or | |
1210 provide your own serialiser method. | |
1211 | |
1212 With "convert_blessed_universally" mode, "encode" converts blessed | |
1213 hash references or blessed array references (contains other blessed | |
1214 references) into JSON members and arrays. | |
1215 | |
1216 use JSON -convert_blessed_universally; | |
1217 JSON->new->allow_blessed->convert_blessed->encode( $blessed_object ); | |
1218 | |
1219 See to convert_blessed. | |
1220 | |
1221 simple scalars | |
1222 Simple Perl scalars (any scalar that is not a reference) are the | |
1223 most difficult objects to encode: JSON::XS and JSON::PP will encode | |
1224 undefined scalars as JSON "null" values, scalars that have last been | |
1225 used in a string context before encoding as JSON strings, and | |
1226 anything else as number value: | |
1227 | |
1228 # dump as number | |
1229 encode_json [2] # yields [2] | |
1230 encode_json [-3.0e17] # yields [-3e+17] | |
1231 my $value = 5; encode_json [$value] # yields [5] | |
1232 | |
1233 # used as string, so dump as string | |
1234 print $value; | |
1235 encode_json [$value] # yields ["5"] | |
1236 | |
1237 # undef becomes null | |
1238 encode_json [undef] # yields [null] | |
1239 | |
1240 You can force the type to be a string by stringifying it: | |
1241 | |
1242 my $x = 3.1; # some variable containing a number | |
1243 "$x"; # stringified | |
1244 $x .= ""; # another, more awkward way to stringify | |
1245 print $x; # perl does it for you, too, quite often | |
1246 | |
1247 You can force the type to be a number by numifying it: | |
1248 | |
1249 my $x = "3"; # some variable containing a string | |
1250 $x += 0; # numify it, ensuring it will be dumped as a number | |
1251 $x *= 1; # same thing, the choice is yours. | |
1252 | |
1253 You can not currently force the type in other, less obscure, ways. | |
1254 | |
1255 Note that numerical precision has the same meaning as under Perl (so | |
1256 binary to decimal conversion follows the same rules as in Perl, | |
1257 which can differ to other languages). Also, your perl interpreter | |
1258 might expose extensions to the floating point numbers of your | |
1259 platform, such as infinities or NaN's - these cannot be represented | |
1260 in JSON, and it is an error to pass those in. | |
1261 | |
1262 Big Number | |
1263 If the backend is JSON::PP and "allow_bignum" is enable, "encode" | |
1264 converts "Math::BigInt" objects and "Math::BigFloat" objects into | |
1265 JSON numbers. | |
1266 | |
1267 JSON and ECMAscript | |
1268 See to "JSON and ECMAscript" in JSON::XS. | |
1269 | |
1270 JSON and YAML | |
1271 JSON is not a subset of YAML. See to "JSON and YAML" in JSON::XS. | |
1272 | |
1273 BACKEND MODULE DECISION | |
1274 When you use "JSON", "JSON" tries to "use" JSON::XS. If this call | |
1275 failed, it will "uses" JSON::PP. The required JSON::XS version is *2.2* | |
1276 or later. | |
1277 | |
1278 The "JSON" constructor method returns an object inherited from the | |
1279 backend module, and JSON::XS object is a blessed scalar reference while | |
1280 JSON::PP is a blessed hash reference. | |
1281 | |
1282 So, your program should not depend on the backend module, especially | |
1283 returned objects should not be modified. | |
1284 | |
1285 my $json = JSON->new; # XS or PP? | |
1286 $json->{stash} = 'this is xs object'; # this code may raise an error! | |
1287 | |
1288 To check the backend module, there are some methods - "backend", "is_pp" | |
1289 and "is_xs". | |
1290 | |
1291 JSON->backend; # 'JSON::XS' or 'JSON::PP' | |
1292 | |
1293 JSON->backend->is_pp: # 0 or 1 | |
1294 | |
1295 JSON->backend->is_xs: # 1 or 0 | |
1296 | |
1297 $json->is_xs; # 1 or 0 | |
1298 | |
1299 $json->is_pp; # 0 or 1 | |
1300 | |
1301 If you set an environment variable "PERL_JSON_BACKEND", the calling | |
1302 action will be changed. | |
1303 | |
1304 PERL_JSON_BACKEND = 0 or PERL_JSON_BACKEND = 'JSON::PP' | |
1305 Always use JSON::PP | |
1306 | |
1307 PERL_JSON_BACKEND == 1 or PERL_JSON_BACKEND = 'JSON::XS,JSON::PP' | |
1308 (The default) Use compiled JSON::XS if it is properly compiled & | |
1309 installed, otherwise use JSON::PP. | |
1310 | |
1311 PERL_JSON_BACKEND == 2 or PERL_JSON_BACKEND = 'JSON::XS' | |
1312 Always use compiled JSON::XS, die if it isn't properly compiled & | |
1313 installed. | |
1314 | |
1315 PERL_JSON_BACKEND = 'JSON::backportPP' | |
1316 Always use JSON::backportPP. JSON::backportPP is JSON::PP back port | |
1317 module. "JSON" includes JSON::backportPP instead of JSON::PP. | |
1318 | |
1319 These ideas come from DBI::PurePerl mechanism. | |
1320 | |
1321 example: | |
1322 | |
1323 BEGIN { $ENV{PERL_JSON_BACKEND} = 'JSON::PP' } | |
1324 use JSON; # always uses JSON::PP | |
1325 | |
1326 In future, it may be able to specify another module. | |
1327 | |
1328 USE PP FEATURES EVEN THOUGH XS BACKEND | |
1329 Many methods are available with either JSON::XS or JSON::PP and when the | |
1330 backend module is JSON::XS, if any JSON::PP specific (i.e. JSON::XS | |
1331 unsupported) method is called, it will "warn" and be noop. | |
1332 | |
1333 But If you "use" "JSON" passing the optional string "-support_by_pp", it | |
1334 makes a part of those unsupported methods available. This feature is | |
1335 achieved by using JSON::PP in "de/encode". | |
1336 | |
1337 BEGIN { $ENV{PERL_JSON_BACKEND} = 2 } # with JSON::XS | |
1338 use JSON -support_by_pp; | |
1339 my $json = JSON->new; | |
1340 $json->allow_nonref->escape_slash->encode("/"); | |
1341 | |
1342 At this time, the returned object is a "JSON::Backend::XS::Supportable" | |
1343 object (re-blessed XS object), and by checking JSON::XS unsupported | |
1344 flags in de/encoding, can support some unsupported methods - "loose", | |
1345 "allow_bignum", "allow_barekey", "allow_singlequote", "escape_slash" and | |
1346 "indent_length". | |
1347 | |
1348 When any unsupported methods are not enable, "XS de/encode" will be used | |
1349 as is. The switch is achieved by changing the symbolic tables. | |
1350 | |
1351 "-support_by_pp" is effective only when the backend module is JSON::XS | |
1352 and it makes the de/encoding speed down a bit. | |
1353 | |
1354 See to "JSON::PP SUPPORT METHODS". | |
1355 | |
1356 INCOMPATIBLE CHANGES TO OLD VERSION | |
1357 There are big incompatibility between new version (2.00) and old (1.xx). | |
1358 If you use old "JSON" 1.xx in your code, please check it. | |
1359 | |
1360 See to "Transition ways from 1.xx to 2.xx." | |
1361 | |
1362 jsonToObj and objToJson are obsoleted. | |
1363 Non Perl-style name "jsonToObj" and "objToJson" are obsoleted (but | |
1364 not yet deleted from the source). If you use these functions in your | |
1365 code, please replace them with "from_json" and "to_json". | |
1366 | |
1367 Global variables are no longer available. | |
1368 "JSON" class variables - $JSON::AUTOCONVERT, $JSON::BareKey, etc... | |
1369 - are not available any longer. Instead, various features can be | |
1370 used through object methods. | |
1371 | |
1372 Package JSON::Converter and JSON::Parser are deleted. | |
1373 Now "JSON" bundles with JSON::PP which can handle JSON more properly | |
1374 than them. | |
1375 | |
1376 Package JSON::NotString is deleted. | |
1377 There was "JSON::NotString" class which represents JSON value | |
1378 "true", "false", "null" and numbers. It was deleted and replaced by | |
1379 "JSON::Boolean". | |
1380 | |
1381 "JSON::Boolean" represents "true" and "false". | |
1382 | |
1383 "JSON::Boolean" does not represent "null". | |
1384 | |
1385 "JSON::null" returns "undef". | |
1386 | |
1387 "JSON" makes JSON::XS::Boolean and JSON::PP::Boolean is-a relation | |
1388 to JSON::Boolean. | |
1389 | |
1390 function JSON::Number is obsoleted. | |
1391 "JSON::Number" is now needless because JSON::XS and JSON::PP have | |
1392 round-trip integrity. | |
1393 | |
1394 JSONRPC modules are deleted. | |
1395 Perl implementation of JSON-RPC protocol - "JSONRPC ", | |
1396 "JSONRPC::Transport::HTTP" and "Apache::JSONRPC " are deleted in | |
1397 this distribution. Instead of them, there is JSON::RPC which | |
1398 supports JSON-RPC protocol version 1.1. | |
1399 | |
1400 Transition ways from 1.xx to 2.xx. | |
1401 You should set "suport_by_pp" mode firstly, because it is always | |
1402 successful for the below codes even with JSON::XS. | |
1403 | |
1404 use JSON -support_by_pp; | |
1405 | |
1406 Exported jsonToObj (simple) | |
1407 from_json($json_text); | |
1408 | |
1409 Exported objToJson (simple) | |
1410 to_json($perl_scalar); | |
1411 | |
1412 Exported jsonToObj (advanced) | |
1413 $flags = {allow_barekey => 1, allow_singlequote => 1}; | |
1414 from_json($json_text, $flags); | |
1415 | |
1416 equivalent to: | |
1417 | |
1418 $JSON::BareKey = 1; | |
1419 $JSON::QuotApos = 1; | |
1420 jsonToObj($json_text); | |
1421 | |
1422 Exported objToJson (advanced) | |
1423 $flags = {allow_blessed => 1, allow_barekey => 1}; | |
1424 to_json($perl_scalar, $flags); | |
1425 | |
1426 equivalent to: | |
1427 | |
1428 $JSON::BareKey = 1; | |
1429 objToJson($perl_scalar); | |
1430 | |
1431 jsonToObj as object method | |
1432 $json->decode($json_text); | |
1433 | |
1434 objToJson as object method | |
1435 $json->encode($perl_scalar); | |
1436 | |
1437 new method with parameters | |
1438 The "new" method in 2.x takes any parameters no longer. You can set | |
1439 parameters instead; | |
1440 | |
1441 $json = JSON->new->pretty; | |
1442 | |
1443 $JSON::Pretty, $JSON::Indent, $JSON::Delimiter | |
1444 If "indent" is enable, that means $JSON::Pretty flag set. And | |
1445 $JSON::Delimiter was substituted by "space_before" and | |
1446 "space_after". In conclusion: | |
1447 | |
1448 $json->indent->space_before->space_after; | |
1449 | |
1450 Equivalent to: | |
1451 | |
1452 $json->pretty; | |
1453 | |
1454 To change indent length, use "indent_length". | |
1455 | |
1456 (Only with JSON::PP, if "-support_by_pp" is not used.) | |
1457 | |
1458 $json->pretty->indent_length(2)->encode($perl_scalar); | |
1459 | |
1460 $JSON::BareKey | |
1461 (Only with JSON::PP, if "-support_by_pp" is not used.) | |
1462 | |
1463 $json->allow_barekey->decode($json_text) | |
1464 | |
1465 $JSON::ConvBlessed | |
1466 use "-convert_blessed_universally". See to convert_blessed. | |
1467 | |
1468 $JSON::QuotApos | |
1469 (Only with JSON::PP, if "-support_by_pp" is not used.) | |
1470 | |
1471 $json->allow_singlequote->decode($json_text) | |
1472 | |
1473 $JSON::SingleQuote | |
1474 Disable. "JSON" does not make such a invalid JSON string any longer. | |
1475 | |
1476 $JSON::KeySort | |
1477 $json->canonical->encode($perl_scalar) | |
1478 | |
1479 This is the ascii sort. | |
1480 | |
1481 If you want to use with your own sort routine, check the "sort_by" | |
1482 method. | |
1483 | |
1484 (Only with JSON::PP, even if "-support_by_pp" is used currently.) | |
1485 | |
1486 $json->sort_by($sort_routine_ref)->encode($perl_scalar) | |
1487 | |
1488 $json->sort_by(sub { $JSON::PP::a <=> $JSON::PP::b })->encode($perl_sc
alar) | |
1489 | |
1490 Can't access $a and $b but $JSON::PP::a and $JSON::PP::b. | |
1491 | |
1492 $JSON::SkipInvalid | |
1493 $json->allow_unknown | |
1494 | |
1495 $JSON::AUTOCONVERT | |
1496 Needless. "JSON" backend modules have the round-trip integrity. | |
1497 | |
1498 $JSON::UTF8 | |
1499 Needless because "JSON" (JSON::XS/JSON::PP) sets the UTF8 flag on | |
1500 properly. | |
1501 | |
1502 # With UTF8-flagged strings | |
1503 | |
1504 $json->allow_nonref; | |
1505 $str = chr(1000); # UTF8-flagged | |
1506 | |
1507 $json_text = $json->utf8(0)->encode($str); | |
1508 utf8::is_utf8($json_text); | |
1509 # true | |
1510 $json_text = $json->utf8(1)->encode($str); | |
1511 utf8::is_utf8($json_text); | |
1512 # false | |
1513 | |
1514 $str = '"' . chr(1000) . '"'; # UTF8-flagged | |
1515 | |
1516 $perl_scalar = $json->utf8(0)->decode($str); | |
1517 utf8::is_utf8($perl_scalar); | |
1518 # true | |
1519 $perl_scalar = $json->utf8(1)->decode($str); | |
1520 # died because of 'Wide character in subroutine' | |
1521 | |
1522 See to "A FEW NOTES ON UNICODE AND PERL" in JSON::XS. | |
1523 | |
1524 $JSON::UnMapping | |
1525 Disable. See to MAPPING. | |
1526 | |
1527 $JSON::SelfConvert | |
1528 This option was deleted. Instead of it, if a given blessed object | |
1529 has the "TO_JSON" method, "TO_JSON" will be executed with | |
1530 "convert_blessed". | |
1531 | |
1532 $json->convert_blessed->encode($blessed_hashref_or_arrayref) | |
1533 # if need, call allow_blessed | |
1534 | |
1535 Note that it was "toJson" in old version, but now not "toJson" but | |
1536 "TO_JSON". | |
1537 | |
1538 TODO | |
1539 example programs | |
1540 | |
1541 THREADS | |
1542 No test with JSON::PP. If with JSON::XS, See to "THREADS" in JSON::XS. | |
1543 | |
1544 BUGS | |
1545 Please report bugs relevant to "JSON" to <makamaka[at]cpan.org>. | |
1546 | |
1547 SEE ALSO | |
1548 Most of the document is copied and modified from JSON::XS doc. | |
1549 | |
1550 JSON::XS, JSON::PP | |
1551 | |
1552 "RFC4627"(<http://www.ietf.org/rfc/rfc4627.txt>) | |
1553 | |
1554 AUTHOR | |
1555 Makamaka Hannyaharamitu, <makamaka[at]cpan.org> | |
1556 | |
1557 JSON::XS was written by Marc Lehmann <schmorp[at]schmorp.de> | |
1558 | |
1559 The release of this new version owes to the courtesy of Marc Lehmann. | |
1560 | |
1561 COPYRIGHT AND LICENSE | |
1562 Copyright 2005-2013 by Makamaka Hannyaharamitu | |
1563 | |
1564 This library is free software; you can redistribute it and/or modify it | |
1565 under the same terms as Perl itself. | |
1566 | |
OLD | NEW |