データ記述言語
基本的な型と配列(またはリスト)、オブジェクト(または構造体)、SET(集合)などが扱えるもの。
プログラミング言語と同じようなパース処理が必要
単純な型と構造型から成る
単純形
null, undefined など特殊な型, 状態
数値
整数型
バイト型、ワードなどバイトの倍数型
byte
short
int
long
ビット型、ビット列型
boolean
bit-string
BigInteger ほぼ上限のない整数型
浮動小数点型
固定長
16bit
32bit float
64bit double
2進/8進/16進 可変長
10進 可変長 BigDecimal
文字型、文字列型
char
String
他
日付、時間型など
型の例はJava
構造と配列
構造は大きくは配列:Listと構造:Map、集合:Setの3つくらいに分けられる
java の例では Collection としてまとめられる
集合 Set 順序を持たない、重複なしの場合があり
配列 List 順序を持つ 比較なし
順列 ソート可能な配列 List
構造 Map 名前を持つ、重複不可、順序なしの場合があり
単純配列もListなどと同じ、class, 構造体も構造と同じ、として見ることができたりするのでこの範囲でまとめられる
構造体にメソッドなどを追加してclassになるとデータ記述言語の範囲を超える
その他
タグ、ラベルなどが扱えるものがある
ブロックサイズに区切られている場合があるかもしれない
テキスト型
バイナリ型(言語かどうかは不明)
DER 標準的な形式
CER 古めの形式
BER Basic Encoding Rule 古めの形式
図?
UML
似たもの
table:比較
言語 JSON YAML ASN.1 CBOR Java
NULL null null NULL NULL null
undefined なし ? undefined -
Boolean Boolean Bool, on, off BOOLEAN Boolean boolean
ビット列 BIT STRING boolean[] BitSet
整数 Number ○ INTEGER integer, bignum byte, short, int, long, BigInteger
最小 -2^53 (互換) ? -64bit tag なし? なし
最大 2^53 (互換) ? 64bit tag なし? なし
浮動小数点 無限? ○ REAL ○ ○ BigDecimal
16bit Number TEXT ○ -
float Number TEXT ○ float
double Number TEXT ○ double
BigDecimal Number (互換外) tag? BigDecimal
NaN - .NAN ○ NaN
Infinity - .inf -.inf +.inf ○ ○
binary BASE64 ? OCTETSTRING byte string ○
timestamp - ○ UTCTime GeneralizedTime tag ○
TEXT String ○ UTF8String PrintableStringなど text string String
Array / List Array 配列型 SEQUENCE OF (同型) array Array / List
Map / Object Object ハッシュ型 SEQUENCE map Map / Object
Set - ○? SET / SET OF /- Set
Tag - - ○ tag -
コメント - ○ - ○
シーケンス JSON Text Sequence CBOR Sequence