TL;DR
Concise Binary Object Representation の略で、RFC 8949 で標準化されたバイナリ形式のデータ交換フォーマットである。データモデルは JSON を拡張したものである。
なぜ必要か
CBOR は、メモリや処理能力が極めて限られた環境でも扱えることを目指して設計された。RFC 8949 は設計目標として次の点を挙げている。
- エンコーダとデコーダを非常に少ないコードで実装できる。メッセージサイズの小ささは、コードの小ささより優先度が低い
- JSON と同じく自己記述的で、スキーマなしでデコードできる
- バージョン交渉なしに拡張でき、古いデコーダも未知の拡張を含むデータを復号できる
仕組み
JSON の型と相互に変換できるうえ、JSON にはないバイト列を扱える。RFC 8949 は RFC 7049 を置き換えたもので、新しいバージョンのフォーマットを作ったわけではない。エンコード結果は CBOR playground で確かめられる。