MessagePack
https://msgpack.org/favicon.ico?.png
公式サイトより
MessagePackは、効率の良いバイナリ形式のオブジェクト・シリアライズ フォーマットです。JSONの置き換えとして使うことができ、様々なプログラミング言語をまたいでデータを交換することが可能です。しかも、JSONよりも速くてコンパクトです。例えば、小さな整数値はたった1バイト、短い文字列は文字列自体の長さ+1バイトでシリアライズできます。
特色
バイナリ形式のシリアライズフォーマット。文字列ベースのJSONに比較してパースにかかるコストを抑え高速に処理できる。
C, C++, C#, D, Erlang, Go, Haskell, Java, JavaScript (Node.js), Lua, OCaml, Perl, PHP, Python, Ruby, Scala, Smalltalk, Swift 等、50種類を超える言語で利用可能なクライアント実装がある。 データ型
大まかにJSONに対応している型があるが、組み込みでバイナリ型などにも対応している。
nil
bool, boolean (true and false)
int, integer (up to 64 bits signed or unsigned)
float, floating point numbers (IEEE single/double precision)
str, UTF-8 string
bin, binary data (up to 232-1 bytes)
array
map, an associative array
ext (arbitrary data of an application-defined format, up to 232-1 bytes)
timestamp (ext type = -1) (up to 32-bit seconds and 64-bit nanoseconds)
仕様
サンプル
code:sample.json
{"compact": true, "schema": 0}
code:messagepack
82 A7 compact C3 A6 schema 00
82 -> 要素数:2
A7 compact -> キーは7文字(compact)
C3 -> true
A6 schema -> キーは6文字(schema)
00 -> int型0