… | |
… | |
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 = '2.3'; |
106 | our $VERSION = 2.34; |
107 | our @ISA = qw(Exporter); |
107 | our @ISA = qw(Exporter); |
108 | |
108 | |
109 | our @EXPORT = qw(encode_json decode_json to_json from_json); |
109 | our @EXPORT = qw(encode_json decode_json to_json from_json); |
110 | |
110 | |
111 | sub to_json($) { |
111 | sub to_json($) { |
… | |
… | |
432 | If C<$enable> is true (or missing), then the C<encode> method will output JSON objects |
432 | If C<$enable> is true (or missing), then the C<encode> method will output JSON objects |
433 | by sorting their keys. This is adding a comparatively high overhead. |
433 | by sorting their keys. This is adding a comparatively high overhead. |
434 | |
434 | |
435 | If C<$enable> is false, then the C<encode> method will output key-value |
435 | If C<$enable> is false, then the C<encode> method will output key-value |
436 | pairs in the order Perl stores them (which will likely change between runs |
436 | pairs in the order Perl stores them (which will likely change between runs |
437 | of the same script). |
437 | of the same script, and can change even within the same run from 5.18 |
|
|
438 | onwards). |
438 | |
439 | |
439 | This option is useful if you want the same data structure to be encoded as |
440 | This option is useful if you want the same data structure to be encoded as |
440 | the same JSON text (given the same overall settings). If it is disabled, |
441 | the same JSON text (given the same overall settings). If it is disabled, |
441 | the same hash might be encoded differently even if contains the same data, |
442 | the same hash might be encoded differently even if contains the same data, |
442 | as key-value pairs have no inherent ordering in Perl. |
443 | as key-value pairs have no inherent ordering in Perl. |
… | |
… | |
1319 | that difficult or long) and finally make YAML compatible to it, and |
1320 | that difficult or long) and finally make YAML compatible to it, and |
1320 | educating users about the changes, instead of spreading lies about the |
1321 | educating users about the changes, instead of spreading lies about the |
1321 | real compatibility for many I<years> and trying to silence people who |
1322 | real compatibility for many I<years> and trying to silence people who |
1322 | point out that it isn't true. |
1323 | point out that it isn't true. |
1323 | |
1324 | |
1324 | Addendum/2009: the YAML 1.2 spec is still incomaptible with JSON, even |
1325 | Addendum/2009: the YAML 1.2 spec is still incompatible with JSON, even |
1325 | though the incompatibilities have been documented (and are known to |
1326 | though the incompatibilities have been documented (and are known to Brian) |
1326 | Brian) for many years and the spec makes explicit claims that YAML is a |
1327 | for many years and the spec makes explicit claims that YAML is a superset |
1327 | superset of JSON. It would be so easy to fix, but apparently, bullying and |
1328 | of JSON. It would be so easy to fix, but apparently, bullying people and |
1328 | corrupting userdata is so much easier. |
1329 | corrupting userdata is so much easier. |
1329 | |
1330 | |
1330 | =back |
1331 | =back |
1331 | |
1332 | |
1332 | |
1333 | |
… | |
… | |
1445 | process simulations - use fork, it's I<much> faster, cheaper, better). |
1446 | process simulations - use fork, it's I<much> faster, cheaper, better). |
1446 | |
1447 | |
1447 | (It might actually work, but you have been warned). |
1448 | (It might actually work, but you have been warned). |
1448 | |
1449 | |
1449 | |
1450 | |
|
|
1451 | =head1 THE PERILS OF SETLOCALE |
|
|
1452 | |
|
|
1453 | Sometimes people avoid the Perl locale support and directly call the |
|
|
1454 | system's setlocale function with C<LC_ALL>. |
|
|
1455 | |
|
|
1456 | This breaks both perl and modules such as JSON::XS, as stringification of |
|
|
1457 | numbers no longer works correcly (e.g. C<$x = 0.1; print "$x"+1> might |
|
|
1458 | print C<1>, and JSON::XS might output illegal JSON as JSON::XS relies on |
|
|
1459 | perl to stringify numbers). |
|
|
1460 | |
|
|
1461 | The solution is simple: don't call C<setlocale>, or use it for only those |
|
|
1462 | categories you need, such as C<LC_MESSAGES> or C<LC_CTYPE>. |
|
|
1463 | |
|
|
1464 | If you need C<LC_NUMERIC>, you should enable it only around the code that |
|
|
1465 | actually needs it (avoiding stringification of numbers), and restore it |
|
|
1466 | afterwards. |
|
|
1467 | |
|
|
1468 | |
1450 | =head1 BUGS |
1469 | =head1 BUGS |
1451 | |
1470 | |
1452 | While the goal of this module is to be correct, that unfortunately does |
1471 | While the goal of this module is to be correct, that unfortunately does |
1453 | not mean it's bug-free, only that I think its design is bug-free. If you |
1472 | not mean it's bug-free, only that I think its design is bug-free. If you |
1454 | keep reporting bugs they will be fixed swiftly, though. |
1473 | keep reporting bugs they will be fixed swiftly, though. |