CBOR
RFC 8949 Concise Binary Object Representation (CBOR) STD 94
JSON的なものをバイナリ形式にしたもの 短いのが特徴。 IoT向けにParseがしやすいJSON的な使い方をされる
サブセット
table:データ
major型.追加情報 内容 形式
0 64bit 正整数
1 64bit 負整数
2 バイト列
3 文字列 UTF-8
4 Array / List
5 Map
6 タグ拡張 ネスト可能
6.0 datetime string 3 RFC 4287 Atom Section 3.3 RFC 3339 6.1 Epoc time 0 1 7.25 7.26 7.27 いずれかの型
6.2 Bignum 正整数 2
6.3 Bignum 負整数 2
6.4 BigDecimal 2
6.5 BigFloat 2
6.6...20 (未定義)
6.23 base16 (HEX)の代用 2
6.24 CBOR encoded 2
6.25...31 (未定義)
6.32 URI 3
6.33 base64url 3
6.34 base64 3
6.35 正規表現 3
6.36 MIME message 3
6.110 ObjectIdentifier RFC 9090
6.111 ObjectIdentifier RFC 9090
6.112 ObjectIdentifier RFC 9090
7 長さ固定なもの
7.20 false
7.21 true
7.22 NULL
7.23 undefined
7.25 Half 16bit 浮動小数点
7.26 Single 32bit 浮動小数点
7.27 Double 64bit 浮動小数点
7.28...30 予約
7.31 break
符号化方式がcodeによってある程度決まるので未定義な部分もある
扱えるデータ
NULL
undefined (JavaScript等)
Boolean
数値
整数型 64bit 符号なし * 2 = 65bit相当?
浮動小数点型 (16bit , Float(32bit), Double(64bit))
バイナリ列
テキスト (UTF-8)
Array / List
Map
タグで型の意味づけなどを拡張できる
日付/時刻 text または 秒数
Bignum 整数
BigDecimal
BigFloat
BASE64URL
BASE64
BASE16 (HEX)
CBOR のデータ
など
JSON のものはまるっと扱えるような形だが一部違いがある
undefined がある
浮動小数点型のNaN, Infinityなどが使える?
整数、浮動小数点共にタグなしでは上限あり。BigInteger, BigDecimal などはタグで扱う
バイナリデータが扱える JSONはBASE64などを使う
タグで型が拡張できる
RFC 8742 Concise Binary Object Representation (CBOR) Sequences
複数CBORを1ストリームにまとめる
RFC 8746 Concise Binary Object Representation (CBOR) Tags for Typed Arrays
RFC 8769 Cryptographic Message Syntax (CMS) Content Types for Concise Binary Object Representation (CBOR) RFC 8943 Concise Binary Object Representation (CBOR) Tags for Date
RFC 9090 Concise Binary Object Representation (CBOR) Tags for Object Identifiers
RFC 9164 Concise Binary Object Representation (CBOR) Tags for IPv4 and IPv6 Addresses and Prefixes
RFC 9360 CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates RFC 9459 CBOR Object Signing and Encryption (COSE): AES-CTR and AES-CBC RFC 9581 Concise Binary Object Representation (CBOR) Tags for Time, Duration, and Period
RFC 9596 CBOR Object Signing and Encryption (COSE) "typ" (type) Header Parameter RFC 9597 CBOR Web Token (CWT) Claims in COSE Headers RFC 9679 CBOR Object Signing and Encryption (COSE) Key Thumbprint RFC 9781 A Concise Binary Object Representation (CBOR) Tag for Unprotected CBOR Web Token Claims Sets (UCCS) テキスト表現にはYAMLがいいらしいのでJSONからはYAML経由でなんとかする方がいい? スキーマ定義にRFC 8610 Concise data definition language(CDDL)があるらしい。