CBOR
CBOR(Concise Binary Object Representation)は JSON のバイナリ版であり、RFC 8949 で標準化され、よりコンパクトでより多くのデータ型をサポートする。
目的
帯域やストレージが制約される場面に向けて、JSON よりコンパクトなバイナリ符号化を提供する。
メカニズム
すべてのデータ項目は先頭のタグバイトで始まり、上位 3 ビットがメジャータイプ(0〜7)、下位 5 ビットが追加情報を表す。メジャータイプ 0〜2 は符号なし整数、負の整数、バイト列、3 はテキスト文字列、4〜5 は配列とマップ、6 はタグ(意味的標識)、7 は浮動小数点数と単純値である。拡張タグにより日付、URL、多倍長整数などをサポートする。
ユースケース
- CoAP IoT プロトコル
- WebAuthn のクレデンシャルデータ
- IPLD(IPFS のデータモデル)
- センサーデータの転送
例
- 入力
{"a":1}OutputA1 61 61 01CBOR encoding of a one-pair map
よくあるエラー
- Confusing CBOR and MessagePack encoding details
- They differ; parse with each specification
関連用語
JSON
JSON(JavaScript Object Notation)は、JavaScript のオブジェクトリテラルに基づく軽量なデータ交換形式である。キー・バリューペアと配列を使う。 用語集
MessagePack
MessagePackは効率的なバイナリシリアライゼーション形式で、JSONに似ているがよりコンパクトであり、多言語サポートを持ち、RPCやキャッシュに使われる。 用語集
Protocol Buffers
Protocol Buffersは、Googleが設計した言語非依存のバイナリシリアライズ形式である。.proto スキーマ定義を必要とし、JSON/XMLよりコンパクトで型安全である。 用語集
関連ツール
CBOR デコーダー
CBOR デコード — 純クライアントサイドツール。本物の RFC 8949 CBOR バイナリ(hex/base64 自動判定)を整形 JSON にデコード。major type 0-7 全対応:全整数、バイト/テキスト列(indefinite 長含む)、配列、マップ、タグ(bignum・日付・URI)、simple 値、半/単/倍精度浮動小数点。プライバシーファースト、サーバー往復なし。 ツール
CBOR エンコーダー
CBOR エンコード — 純クライアントサイドツール。JSON を本物の RFC 8949 CBOR バイナリ(ワイヤ互換)へ、決定論的エンコーディング(§4.2.1:最短の整数/浮動小数点、マップキーは length-first 後バイト順ソート)で変換。$bytes/$tag/$bignum/$simple 規約オブジェクトでバイト列・タグ・多倍長整数・simple 値をサポート。出力は hex(デフォルト)または base64。プライバシーファースト、サーバー往復なし。 ツール