FSONはFlexible Serialized Object Notationの略で、設定を記述しやすくするようにJSONを拡張したものです。
通常のJSONとしての機能に加えて、以下の機能がプラスされています。
コメント
/* Multiline Commant */
という記法で複数行コメントを記述できます。
// Single comment
という記法で1行コメントを記述できます。
JSONにはない値
Nan, Infinity, -Infinity
といった特殊な値を持つ浮動小数点数を記述てきます。
また、 0x1ABC` のような16進数リテラルもサポートされています。
オブジェクトのキー
オブジェクトのキーはJSON同様にダブルクォートで囲めるだけでなく、シングルクォートで囲ったりクォートなしにもできます。
{
"double quotes": null,
'single quotes': null,
withoutQuotes: null
}
参照
値にIDを付与して、そのIDを使って参照をすることもできます。
例えば、以下のようなISONがあったときに、
{
something: {
key: #{ #id: "identifier"; #value: "value"; }
}
}
以下のいずれかの方法で value
を参照できます。
- 識別子そのものを使う方法:
#identifier
もしくは#"identifier"
- パスを使う方法:
#/something/identifier
もしくは#/"something"/"identifier"
テンプレート文字列
バッククォートで囲まれた文字列はテンプレート文字列として扱われ変数を埋め込むことができます。
このときに前述した参照機能を使って変数を参照することもできます。
{
x: 5,
something: `x is ${x}`
}
他の細かな機能
オブジェクトと配列の最終要素の後のカンマ
参集要素の後にカンマがあってもシンタックスエラーにはならないです。
{ x: { y: [], }, }
正の数のプラス
正の数を表すためにプラスを付けることもできます。
+1.5
複数行文字列
文字列は複数行二対応しています。
"hello
world"