このツールの動作
クエリ文字列が JSON のオブジェクトになります。
?q=json+to+yaml&page=2&tag=a&tag=b
{
"q": "json to yaml",
"page": "2",
"tag": ["a", "b"]
}
+ は空白、%C3%A9 は é です。パーセント符号化はこちらで解きます。たいていはそれが訪れた理由でしょう。同じキーが繰り返されていれば、現れた順の配列になります。
アドレスごと貼ってよい
https://x.dev/search?q=ada&lang=ja#results
{
"q": "ada",
"lang": "ja"
}
URL をまるごと貼るのは多くの人がすることですが、このツールはクエリの前にあるものすべてでキーを作っていました。https://x.dev/search?q のように。結果はデータのような顔をして、意味を成していませんでした。いまは最初の疑問符より前のアドレスを落とし、その後ろの断片も落とします。location.search もそれを運びません。本物の欠陥で、このページを書く過程で見つけ、直しました。
値の中の疑問符はそのままです。a=1?2 は {"a": "1?2"} になります。クエリを開く疑問符は最初の = より前にあり、後ろではないからです。
すべては文字列
?id=007&active=true&count=3
{
"id": "007",
"active": "true",
"count": "3"
}
クエリ文字列が運ぶのは文字です。007 は 7 ではなく、true は真偽値ではありません。推し量る変換器は、黙って識別子を書き換えてしまいます。型付けは、count が数で id がゼロ付きの参照だと知っているあなたの側の仕事です。
手を触れないもの
- 角括弧付きのキー。
a[]=1やo[b]=2はa[]、o[b]のまま名前になります。PHP と Rails はそこに配列や連想配列を読みますが、そうしない基盤もあり、文字列自身は書き手を明かしません。 - キーの順序。 入ってきた順に出ていきます。最初に現れたものが先です。
- 空の値。
?a&b=は{"a": "", "b": ""}です。値の無い引数も「ある」のであり、多くの場合それこそが意味です。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。