ToolConvoyToolConvoyv2.6
DEV

クエリ文字列パーサー — URL クエリ文字列を JSON に解析

URL クエリ文字列を構造化 JSON に解析します。ネストされたパラメータ、配列、エンコーディングを処理。ブラウザ内で動作し、アップロード不要。

● ローカル動作 · タブ内で生成ページ読み込み以降のツールによる通信:0件

Query String Parser

Parse URL query strings to JSON. Auto-detects types (numbers, booleans). Works entirely in your browser.

クエリ文字列はすべての URL の最も愛されていない部分です。? の後にあり、ページが必要だがユーザーが必要としないパラメータを運び、本番環境では、一見しただけでは人間が読めない密集した、ネストされた、パーセントエンコードされた混沌に成長する可能性があります。search?filters[category][]=books&filters[price][min]=10&filters[price][max]=50&sort=relevance&page=1&limit=25 のようなクエリ文字列は、ネストと配列を持つ構造化クエリをエンコードしますが、生で読んでもその構造の感覚は得られません。パーサーは、1 回の貼り付けでその混沌をフォーマット済み JSON ツリーに展開します。

2000 年代初頭に PHP が普及させたブラケット記法は、URL でネストされたパラメータをエンコードするための事実上の標準になりました。Rails が採用し、Express.js ミドルウェアが受け入れ、ウェブ上の REST API の半分がそれを生成します。フラットモードパーサーは、単純な API 呼び出しをデバッグするための単純なキーと値マップを提供します。ネストモードパーサーは、ブラケット記法から意図されたオブジェクト階層を再構築し、5 レベル深いパラメータをデバッグしていて、バグが 1 つの親キーのスペルミスである場合に望むものです。

実用的なワークフローは DevTools のデバッグセッションです。Network タブからリクエスト URL(300 文字の文字列と長いクエリ文字列)をコピーし、特定のパラメータが送信されたかどうかとその値が何であるかを確認する必要があります。パーサーはクエリ文字列を抽出し、パーセントエンコーディングをデコードし、パラメータを検索可能で折りたたみ可能なツリーとして提示します。アンパサンドの手動分割、文字ごとのどのパーセントシーケンスがどの文字にデコードされるかの推測、生の文字列でスキャンしたため重複キーを逃すことはありません。

広告

使い方

  1. クエリ文字列を貼り付ける

    完全な URL または単にクエリ文字列部分を貼り付けます。パーサーは `?` 以降のすべてを抽出し、フラットまたはネストされた JSON オブジェクトに分解します。完全な URL は自動分割され、パスとハッシュは別のパネルに表示されます。

  2. 解析モードを選択する

    フラットモードは `a=1&b=2` を `{"a": "1", "b": "2"}` にマッピングします。ネストモードはブラケット記法を使用します(`a[b]=1` → `{"a": {"b": "1"}}`)。配列モードは繰り返されるキー(`a=1&a=2`)を JSON 配列にマッピングします(`{"a": ["1", "2"]}`)。

  3. 結果をコピーまたは検査する

    JSON をクリップボードにコピーするか、インタラクティブなツリービューを使用してネストされたオブジェクトを展開します。ツリービューは、深くネストされたパラメータを持つ長いクエリ文字列に適した選択です。

よくある質問

URL エンコードされた文字はどのように処理されますか?

パーサーは JSON 出力を構築する前にパーセントエンコードされた文字(`%20` → スペース、`%26` → アンパサンド)を自動デコードします。二重エンコードされた値(`%2520` → `%20`)は 1 回デコードされ、出力にリテラル `%20` が生成されます。入力がエンコードされていない場合、パーサーはそのままにします。

同じキーが複数回出現する場合はどうなりますか?

フラットモードでは、最後の値が勝ちます。`a=1&a=2` は `{"a": "2"}` を生成します。配列モードでは、繰り返されるキーが JSON 配列にまとめられます。`{"a": ["1", "2"]}`。モードトグルにより、デバッグしているサーバーフレームワークに合わせた動作を選択できます。

空のパラメータはどのように処理されますか?

値のないキー(`a=&b=2`)は空文字列を生成します:`{"a": "", "b": "2"}`。イコール符号すらないキー(`a&b=2`)はフラグモードではブールフラグとして扱われ(`{"a": true, "b": "2"}`)、厳密モードでは空値のキーとして扱われます。

OAuth リダイレクト URI からのクエリ文字列を解析できますか?

はい。OAuth リダイレクトにはフラグメント(ハッシュ)が含まれることが多く、パーサーはフラグメントをクエリ文字列から分離します。フラグメントにトークンが含まれる暗黙的付与 OAuth フローの場合は、フラグメントを URL ハッシュパネルに別途貼り付けてください。

パラメータ名や値を検証しますか?

いいえ。パーサーは構造をそのまま抽出します。スキーマに対するパラメータ名の検証、値タイプのチェック、文字セットの強制は行いません。検証のためには、JSON Schema バリデーターまたは NDJSON Validator ツールに出力をパイプしてください。

制限事項

  • 型推論なしデフォルトではすべての値が文字列として返されます。型推論オプションをオンにして、整数に見える文字列、浮動小数点に見える文字列、ブール値に見える文字列をそれぞれの JSON 型に変換します。推論はベストエフォートであり、数値のように見える文字列値を誤分類する可能性があります。
  • ネストブラケット記法はフレームワークによって異なりますブラケットネストモードは PHP/Rack 規約に従います:`a[b][c]=1` → `{"a": {"b": {"c": "1"}}}`。Express.js と Django はネストされたパラメータに対してわずかに異なる規約を使用します。PHP 以外のフレームワークでは解析に調整が必要になる場合があります。
  • 非常に長いクエリ文字列はサポートされません数千文字を超えるクエリ文字列は正しく解析されますが、ツリービューが扱いにくくなる可能性があります。巨大なクエリ文字列のデバッグには、JSON タブに切り替えて関連セクションまでスクロールしてください。

プラットフォーム別の注意点

macOS
コマンドラインで検査する場合、`node -e 'console.log(new URLSearchParams(`...`))'` がキーを抽出します。ブラウザツールはネストパラメータの解析とインタラクティブなツリービューを追加します。
Web
完全にクライアントサイドで動作します。クエリ文字列が端末から離れることはありません。
広告
広告