FORMAT COMPARISON
CBOR vs JSON
CBORはJSONデータモデルを拡張したバイナリ交換形式で、バイト列やタグ、整数幅などJSONにない値を表せます。JSONは人が読めるテキスト交換形式で、Web APIや設定ファイルなど幅広い環境で使われます。
CBORとJSON、どちらを選ぶ?
人が直接編集・確認するテキスト、または既存JSON APIとの互換性を優先するならJSONを選びます。帯域やサイズ、バイト列・拡張型、決定的な符号化が必要なプロトコルならCBORを検討します。対応ライブラリ、tagの意味、決定的エンコード規則を両側で確認してください。
CBOR向き
制約のある機器や通信での構造化データ交換・COSEやIoTプロトコルなどでのデータ表現
- JSONに似たデータを小さなバイナリ表現で扱う
- 標準タグやアプリケーション定義タグで値の意味を示す
JSON向き
Web API・設定ファイル・データ交換
- 構造化データの受け渡し
基本情報を比較
CBORとJSONの主な違いを確認できます。
| 項目 | CBOR | JSON |
|---|---|---|
| 拡張子 | .cbor | .json |
| MIME Type | application/cbor | application/json |
| 主な用途 | 制約のある機器や通信での構造化データ交換・COSEやIoTプロトコルなどでのデータ表現 | Web API・設定ファイル・データ交換 |
| 圧縮 | none | 該当なし |
| 開く方法 | CBORライブラリやデコーダーで読み込み、診断表記またはJSON相当の表示へ変換して確認します。タグやバイト列など、JSONに直接対応しない値は変換時の表現を確認してください。 | テキストエディタ、IDE、JSON対応ビューアで開けます。 |
| 書き出し・変換 | JSONへ変換すると、バイト列やタグ付き値などはJSONに直接対応しないため、ツール固有の表記になることがあります。署名・ハッシュ・キャッシュキーに使う場合はRFC 8949の決定的符号化など、プロトコルで合意した符号化規則を適用します。 | アプリケーションや変換ツールでCSVなどへ変換できます。 |
用途別の選び方
作りたいものや使う場面から選べます。
JSONに似たデータを小さなバイナリ表現で扱う
制約のある機器や通信での構造化データ交換・COSEやIoTプロトコルなどでのデータ表現
CBOR向き標準タグやアプリケーション定義タグで値の意味を示す
制約のある機器や通信での構造化データ交換・COSEやIoTプロトコルなどでのデータ表現
CBOR向き構造化データの受け渡し
Web API・設定ファイル・データ交換
JSON向き確認ポイント 1
JSONは文字列として表されるテキストで、CBORはバイト列として表されるバイナリ項目です。CBORは整数、byte string、tag等を直接扱えますが、JSONでは必要に応じてbase64文字列やアプリ規約へ変換します。
使い分け確認ポイント 2
RFC 8259 JSONはobject、array、string、number、boolean、nullを定義し、構文自体はアプリ固有スキーマを要求しません。CBORはマップや配列のほかtag付き値を持ち、JSONを超えるデータモデルを定義します。
使い分け選ぶ理由を詳しく
- CBORの診断表記はデバッグ用であり、実際の交換形式はバイナリです。CBORからJSONに変換するとtag、byte string、整数の表現や数値精度、決定的符号化の情報が失われることがあります。受信側の型・範囲・正規化規則を定めて相互運用試験をしてください。