Version 2.2 (2012-04-28) =========== Changes since version 2.1: * __jsontype is only used for empty tables. * It is possible to decode tables without assigning metatables. * Locations for error messages were off by one in the first line. * There is no LPeg version of json.quotestring anymore. Version 2.1 (2011-07-08) =========== Changes since version 2.0: * Changed the documentation to Markdown format. * LPeg is now parsing only a single value at a time to avoid running out of Lua stack for big arrays and objects. * Read __tojson, __jsontype and __jsonorder even from blocked metatables through the debug module. * Fixed decoding single numbers (only affected the non-LPeg mode). * Corrected the range of escaped Unicode control characters. Version 1.1 (2011-07-08) =========== Changes since version 1.0: * The values NaN/+Inf/-Inf are recognised and encoded as "null" like in the original JavaScript implementation. * Read __tojson even from blocked metatables through the debug module. * Fixed decoding single numbers. * Corrected the range of escaped Unicode control characters. Version 2.0 (2011-05-31) =========== Changes since version 1.0: * Optional LPeg support. * Invalid input data for encoding raises errors instead of returning nil and the error message. (Invalid data for encoding is usually a programming error. Raising an error removes the work of explicitly checking the result). * The metatable field __jsontype can control whether a Lua table is encoded as a JSON array or object. (Mainly useful for empty tables). * When decoding, two metatables are created. One is used to mark the arrays while the other one is used for the objects. (The metatables are created once for each decoding operation to make sandboxing possible. However, you can specify your own metatables as arguments). * There are no spaces added any longer when encoding. * It is possible to explicitly sort keys for encoding by providing an array with key names to the option "keyorder" or the metatable field __jsonorder. * The values NaN/+Inf/-Inf are recognised and encoded as "null" like in the original JavaScript implementation. Version 1.0 =========== Initial version, released 2010-08-28.