json/doc/mkdocs/docs/features/binary_formats/index.md
Niels Lohmann ddf92606ab
📝 add PlantUML
2020-05-24 21:05:35 +02:00

2.1 KiB

Overview

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 Specification)

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 not supported
MessagePack supported supported
UBJSON not supported not supported

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 %