mirror of
https://github.com/nlohmann/json.git
synced 2024-09-07 04:28:25 +02:00
* 🔥 consolidate documentation * ♻️ overwork std specializations * 🚚 move images files to mkdocs * ♻️ fix URLs * 🔧 tweak MkDocs configuration * 🔧 add namespaces * 📝 document deprecations * 📝 document documentation generation * 🚸 improve search * 🚸 add examples * 🚧 start adding documentation for macros * 📝 add note for https://github.com/nlohmann/json/issues/874#issuecomment-1001699139 * 📝 overwork example handling * 📝 fix Markdown tables
2.2 KiB
2.2 KiB
Binary Formats
Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance over a network. Hence, the library supports
- BSON (Binary JSON),
- CBOR (Concise Binary Object Representation),
- MessagePack, and
- UBJSON (Universal Binary JSON)
to efficiently encode JSON values to byte vectors and to decode such vectors.
Comparison
Completeness
Format | Serialization | Deserialization |
---|---|---|
BSON | incomplete: top-level value must be an object | incomplete, but all JSON types are supported |
CBOR | complete | incomplete, but all JSON types are supported |
MessagePack | complete | complete |
UBJSON | complete | complete |
Binary values
Format | Binary values | Binary subtypes |
---|---|---|
BSON | supported | supported |
CBOR | supported | supported |
MessagePack | supported | supported |
UBJSON | not supported | not supported |
See binary values for more information.
Sizes
Format | canada.json | twitter.json | citm_catalog.json | jeopardy.json |
---|---|---|---|---|
BSON | 85,8 % | 95,2 % | 95,8 % | 106,7 % |
CBOR | 50,5 % | 86,3 % | 68,4 % | 88,0 % |
MessagePack | 50,6 % | 86,0 % | 68,5 % | 87,9 % |
UBJSON | 53,2 % | 91,3 % | 78,2 % | 96,6 % |
UBJSON (size) | 58,6 % | 92,3 % | 86,8 % | 97,4 % |
UBJSON (size+type) | 55,9 % | 92,3 % | 85,0 % | 95,0 % |
Sizes compared to minified JSON value.