QSONはQuery String Object Notationの略で、HTTP GETリクエストのQuery Stringを構造化する目的で作られました。通常のQuery Stringはシンプルなキーバリューのペアしか表現できなく柔軟性がないです。QSONはQuery Stringで配列やオブジェクトなどのより複雑なデータ構造を表現するために作られたそうです。
サンプル
シンプルな例
まずはシンプルな例を示します。このJSONに対応するQSONは、
{
"id": 3,
"search": "test",
"highlight": true
}
このようになります。
id=3&search=test&highlight=true
よく使うQuery Stringと同様の見た目です。
オブジェクトや配列が含まれている例
オブジェクトや配列などの複雑なデータ構造を含んでいる例も示します。
このJSONは、
{
"favcol": ["blue", "green"],
"pets": {
"cats": 3,
"dogs": 2
}
}
このようなQSONに変換されます。
favcol=(blue'green)&pets=(cats~3'dogs~2)
より複雑なオブジェクト
最後により複雑な例も示します。
このJSONオブジェクトは、
{
"a": [1, 2, 3],
"b": {
"d": {},
"f": ["g", "h"]
},
"c": "true",
"d": 4e-20,
"e": ":-)"
}
このようになります。
a=(1'2'3)&b=(d~(~~)'f~(g'h))&c=_true&d=4e-20&e=%3A-!)
QSONの表記
QSONは以下のような方法でオブジェクトをエンコードします。
- 配列やオブジェクトの要素は
'
で区切られ、オブジェクトのキーバリューは~
で区切られます - 文字列の
"true"
は_true
とエンコードされ、ブール値のtrue
はそのままtrue
とエンコードされます。これはfalseやnullも同様です - QSONで特別な意味を持つ文字をエスケープするために
!
が使われます
出展: