ZSONは Zed というプロジェクトで使われているZed Data Modelをテキストで表現するためのフォーマットです。
ZSONはJSONの上位互換となるように設計されており、JSONに対していくつかの拡張がされています。
以下ではJSONと比較したZSONの仕様を紹介します。
コメント
ZSONではコメントがサポートされています。
//
形式の行コメントと /* */
形式のブロックコメントが使えます。
型デコレーター
ZSONでは型デコレーターを使って型を明示することができます。以下にように値の後ろに型名を括弧で囲って指定します。
<value> ( <type> )
また、型に名前を付けておき、それを後から使うこともできます。
以下はunit16型にportという型名を付けて、それを後から再利用している例です。
{p1:80 (port=uint16), p2: 8080 (port)}
プリミティブ型
ZSONのプリミティブ型はZedデータモデルのプリミティブ型に準じます。
JSONと比較すると以下のような特徴があります。
- 整数型が符号のありなし、ビット数などによって複数個用意されている
- 浮動小数点数型がビット数に応じて複数個用意されている
- 十進数型(decimal)が存在する
- 時間と時刻を表す型が存在する
- バイナリを表す型が存在する
- IPアドレスやネットマスクを表す型が存在する
- Zedの型を表す型が存在する
複合型
ZSONにはレコード型(JSONのオブジェクト型)や配列型のようなJSONに存在する型に加えて以下の方が存在します。
- Set型
- Map型
- Union型
- Enum型
- Error型
出展: