| # 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 |
| |
| - [BJData](https://json.nlohmann.me/features/binary_formats/bjdata/index.md) (Binary JData), |
| - [BSON](https://json.nlohmann.me/features/binary_formats/bson/index.md) (Binary JSON), |
| - [CBOR](https://json.nlohmann.me/features/binary_formats/cbor/index.md) (Concise Binary Object Representation), |
| - [MessagePack](https://json.nlohmann.me/features/binary_formats/messagepack/index.md), and |
| - [UBJSON](https://json.nlohmann.me/features/binary_formats/ubjson/index.md) (Universal Binary JSON) |
| |
| to efficiently encode JSON values to byte vectors and to decode such vectors. |
| |
| ## Comparison |
| |
| ### Completeness |
| |
| | Format | Serialization | Deserialization | |
| | ----------- | --------------------------------------------- | -------------------------------------------- | |
| | BJData | complete | complete | |
| | 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 | |
| | ----------- | ------------- | --------------- | |
| | BJData | not supported | not supported | |
| | BSON | supported | supported | |
| | CBOR | supported | supported | |
| | MessagePack | supported | supported | |
| | UBJSON | not supported | not supported | |
| |
| See [binary values](https://json.nlohmann.me/features/binary_values/index.md) for more information. |
| |
| ### Sizes |
| |
| | Format | canada.json | twitter.json | citm_catalog.json | jeopardy.json | |
| | ------------------ | ----------- | ------------ | ----------------- | ------------- | |
| | BJData | 53.2 % | 91.1 % | 78.1 % | 96.6 % | |
| | BJData (size) | 58.6 % | 92.1 % | 86.7 % | 97.4 % | |
| | BJData (size+type) | 58.6 % | 92.1 % | 86.5 % | 97.4 % | |
| | BSON | 85.8 % | 95.2 % | 95.8 % | 106.7 % | |
| | CBOR | 50.5 % | 86.3 % | 68.4 % | 88.0 % | |
| | MessagePack | 50.5 % | 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. |