Smile (data interchange format)
Filename extension |
.sml |
---|---|
Internet media type |
application/x-jackson-smile (proposed) |
Type of format | Data interchange |
Extended from | JSON |
Standard | no RFC yet |
Website |
wiki |
Smile is a computer data interchange format based on JSON. It can also be considered as a binary serialization of generic JSON data model, which means that tools that operate on JSON may be used with Smile as well, as long as proper encoder/decoder exists for tool to use. The name comes from first 2 bytes of the 4 byte header, which consist of Smiley ":)" followed by a linefeed: choice made to make it easier to recognize Smile-encoded data files using textual command-line tools.
Efficiency
Compared to JSON, Smile is both more compact and more efficient to process (both to read and write).[1] Part of this is due to more efficient binary encoding (similar to BSON, CBOR and UBJSON), but an additional feature is optional use of back references for property names and values. [2] Back referencing allows replacing of property names and/or short (64 bytes or less) String values with 1- or 2-byte reference ids.
Implementations
Libraries known to support Smile include:
- Cheshire (Clojure) is a data encoding library that supports Smile as binary alternative to JSON
- Jackson (Java) (with Smile dataformat module)
- libsmile (C/C++; wrappers for Ruby, Perl)
- Protostuff (Java) supports multiple data formats for serialization, including Smile, JSON, XML and Protobuf.
- PySmile for encoding/decoding Smile data in Python
- smile-js for decoding Smile data from Javascript
See also
References
- ↑ "JVM Serializer Benchmark (results)". Retrieved 7 Jun 2014.
- ↑ "Shared String References in Smile". Retrieved 7 Jun 2014.