7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ZOZOAdvent Calendar 2024

Day 16

QSONについて

Last updated at Posted at 2024-12-15

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で特別な意味を持つ文字をエスケープするために ! が使われます

出展:

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?