このツールの動作
平たい JSON オブジェクトが、URL の ? より後ろの部分になります。
{ "q": "café au lait", "page": 2 }
q=caf%C3%A9+au+lait&page=2
? そのものは含みません。すでにある ? の後ろへ貼るのが普通だからです。
配列は同じ鍵の繰り返しになる
{ "tag": ["news", "draft"] }
tag=news&tag=draft
クエリ文字列に配列をどう収めるかを定めた規格はありません。tag[]=、tag[0]=、読点で区切った並び、鍵の繰り返し——どれもどこかで使われています。鍵の繰り返しは URLSearchParams と大半のサーバ用の枠組みが設定なしで読み戻す形であり、この場所の逆変換が配列として返す形です。
入れ子は変換を止める
{ "filter": { "status": "open" } }
は拒まれ、メッセージは filter を名指しします。filter.status=open や filter[status]=open へ平たくすることは、流儀をひとつ作り出すことです。受け手がそれに同意する必要があり、どれを待っているかは JSON のどこにも書かれていません。
型は残らない。とりわけ null は残らない
クエリ文字列の中身はすべて文字です。2 と "2" は同じ形で出ていき、true は四文字で出ていき、いずれも文字列として戻ります。
null は空の値になります。
{ "ref": null }
ref=
これは "" として読み戻され、null にはなりません。鍵は残り、その空も残りますが、何も無いことと空の文字の違いは消えています。クエリ文字列にはそれを書く手段がありません。ここに書いておくのは、さもなければ本番で見つかる種類の損失だからです。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。