JSONオブジェクトをクエリ文字列に変換
値からURLの末尾を、壊さずに組み立てます。名前、都市、はい・いいえの印、得点が4つの引数になり、Ada LovelaceはAda%20Lovelaceとして安全に送られます。結果は「?」付きと「?」なしの両方で受け取れます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
アンパサンドと等号を手作業で結合すると、値に空白、アンパサンド、非ASCII文字、予約文字が含まれる瞬間に破綻します。
引数を手でつなぐと壊れる理由
URLの「?」より後ろは、名前と等号と値の組をアンパサンドでつないだものです。手でつなぐ方法は、値に空白やアンパサンド、アクセント付きの文字、予約された文字が入った瞬間に崩れ、URLが間違った場所で切れたり、サーバーが送ったつもりのないものを読んだりします。このツールはすべての名前と値を符号化するので、Ada LovelaceはAda%20Lovelaceとして届き、紛れ込んだアンパサンドが新しい引数を始めることもありません。符号化はブラウザと同じ決まりに従います。
役立つ場面と、できないこと
絞り込みの条件やページ番号を単純な値の組として持つウェブアプリは、アドレスバーに書き込む前に符号化の仕組みが1つ必要です。外部への送信内容を記録したり、署名付きのリンクを作ったりするサービスにも同じ決まりが必要で、そうすればログや問い合わせの記録が実際に送られた内容と一致します。受け付けるのは平らな組だけで、入れ子のまとまりや一覧は誤解を招くURLにせずに受け付けません。空の値は空の引数になり、名前の順番は保たれ、結果は「?」付きと「?」なし、引数の数、組の一覧として返ります。
値をURLの引数にする場面
フィルタチップとページネーション状態を plain オブジェクトとして保持するフロントエンドアプリは、location.search を書く前に単一のエンコーダが必要で、複数値に見えるテキストが生のアンパサンドで分割されないようにします。
Web基礎を教えるカリキュラム著者は、双方向パーサの下に埋もれさせるのではなくオブジェクトからクエリへの直列化専用ランディングを求めます。検索意図が異なるからです。検証失敗は残高を消費しません。
マップを平坦に文書化された上限内に保ち、テストで符号化クエリを固定すれば、フルなURLツールキットを自前で立てずにダッシュボード、LMSプラグイン、エッジワーカー向けの再現可能なパラメータ文字列が得られます。
活用例
アプリ状態から location.search を組み立てる
平坦なフィルタまたはフォームオブジェクトを、ブラウザのアドレスバーや履歴エントリを書く前にパーセント符号化されたクエリ文字列へ変換します。
よくある質問
許可される値の型は何ですか?
文字列、有限数、真偽値、null です。null は等号の後に空の値になります。
キーと値はパーセント符号化されますか?
はい。 キーと値の両方を encodeURIComponent で符号化するため、空白、アンパサンド、等号、非ASCII文字が余分なパラメータを発明しません。
値に含まれる空白やアンパサンドはどうなりますか?
URLが間違った場所で切れないように符号化されます。空白はAda%20Lovelaceのように%20になり、アンパサンドやアクセント付きの文字、その他の予約された文字も同じように、ブラウザが送るのと同じ形で符号化されます。
入れ子のデータや一覧も変換できますか?
いいえ、できません。受け付けるのは名前と値の平らな組だけです。入れ子のまとまりや一覧は分かりやすいメッセージとともに受け付けないので、正しく見えて中身が中途半端なURLができることはありません。
空の値はどうなりますか?
空の値は、名前だけがあり等号のあとに何もない引数になるので、名前はそのまま送られます。値の組そのものが空なら結果も空になり、引数を何も送らないことを示したいときに便利です。
引数の順番は保たれますか?
はい、保たれます。データの中で名前が現れた順に並びます。例ではname、city、active、scoreの順のままで、結果には引数がいくつあるかも示されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/data/json-to-query-params \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"object":{"name":"Ada Lovelace","city":"London","active":true,"score":42}}'const res = await fetch("https://api.kit.forhosting.com/data/json-to-query-params", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"object": {
"name": "Ada Lovelace",
"city": "London",
"active": true,
"score": 42
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/json-to-query-params",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"object": {
"name": "Ada Lovelace",
"city": "London",
"active": true,
"score": 42
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/json-to-query-params", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"object":{"name":"Ada Lovelace","city":"London","active":true,"score":42}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"object":{"name":"Ada Lovelace","city":"London","active":true,"score":42}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/json-to-query-params", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"object": {
"name": "Ada Lovelace",
"city": "London",
"active": true,
"score": 42
}
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.json_to_query_params",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 25 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
API、フロントエンドのルーター、分析パイプラインは、フィルタやフォーム項目を単純なJSONマップとして保持しつつ、アドレスバーや外向きHTTPクライアント向けに正しく符号化されたクエリ文字列を必要とすることがよくあります。この機能は平坦なJSONオブジェクトを1つ受け取り、各スカラー値をテキストに変換し、すべてのキーと値をパーセント符号化して、付与しやすいクエリ文字列と順序付きペア、正規化された文字列マップを返します。ネストしたオブジェクトと配列は invalid_input で拒否されるため、呼び出し側が有効なURLに見える半構造のゴミを送出しません。
平坦なオブジェクトから符号化クエリ文字列へ
結果は生の特殊文字から余分な区切りを発明しないクエリ文字列です。ネストしたオブジェクトと配列は意図的に非対応です。空のオブジェクトは空のクエリ文字列と疑問符プレフィックスだけの形を生成し、ダミーキーを発明せずパラメータなしを主張するテストに役立ちます。キー数と直列化後の総長の上限は、無料ブラウザ経路で病的なマップがメモリを使い果たすのを防ぎます。URLクエリ文字列は、名前イコール値のフィールドをアンパサンドでつないだ列であり、パスの後に疑問符が付くこともあります。信頼できる情報源がすでにJSONオブジェクトである場合——たとえばフィルタ状態、フォームモデル、設定マップ——ブラウザとサーバが期待するワイヤ形式へそのマップを移す決定的な手段が必要です。この機能はオブジェクト自身のキーを挿入順に走査し、各スカラー値を安定した文字列へ変換し(真偽値は true または false、有限数は通常の十進表記、null は空の値)、各キーと各値に encodeURIComponent を適用して空白を percent-twenty、アンパサンドを percent-twenty-six にし、Unicode が転送を生き延びるようにします。クエリパラメータは平坦なキー値ペアであり、ネスト構造を1本の不透明な文字列に直列化すると、リクエストがクライアントを離れる前に直したい誤りが隠れてしまいます。経路は文字列とオブジェクトの純粋な作業で、ネットワークも乱数シードも壁時計もなく、同一入力は常に同一のJSONを生みます。成功時のAPI料金は公開されている基準 $0.002 の1件あたりであり、検証失敗は前払い残高を消費しません。
入力契約、応答形、エラーの扱い
値は文字列、数値、真偽値、null をプロパティとする平坦なオブジェクトでなければなりません。非有限数(NaN と Infinity)はクエリ文字列に標準の可搬な形がないため拒否されます。例: name が Ada Lovelace、city が London、active が true、score が四十二なら、空白と予約文字がパーセント符号化された4パラメータの文字列になります。必須フィールド object(別名 json、data、params、map、fields)を持つJSON本体をPOSTしてください。object をそのようなマップに解析されるJSONテキストとして渡すこともできます。最上位の配列、null、スカラー、ネストしたオブジェクトや配列の値は invalid_input と、該当時に悪いキーを名指しする明確な英語メッセージで失敗します。成功時の応答には query(先頭の疑問符なしの符号化文字列)、query_with_prefix(先頭に疑問符を付けた同じ文字列、キーがない場合は疑問符のみ)、count(パラメータ数)、pairs(スカラー変換後・符号化前の key と value の文字列の順序付き配列)、object(その強制後の値の last-wins 文字列マップ)が含まれます。典型的な失敗: filter のようなキーの下にネストしたフィルタをオブジェクトとして送り、黙って壊れたURLではなく invalid_input を受け取る。成功時のAPI料金は公開基準 $0.002 の1件あたりで、検証失敗は課金されません。
JSONからクエリへの変換が生きる場面
外向きリクエストを記録したり設定マップから署名付きURLを組み立てるバックエンドは、サポートチケットとアクセスログがクライアントが実際に送った内容と一致するよう、ブラウザと同じパーセント符号化規則を必要とします。JSONマップを持つ人は符号化を望み、parse モードの選択肢は望みません。実装が純粋な parse のティア A であるため、成功した呼び出しはモデルトークンも外向きネットワークもなく公開基準価格 $0.002 です。
連携の活用例
外向きHTTPクエリパラメータを用意する
設定マップとリクエストマップを、クライアント、Webhook、署名付きURLビルダー向けの安全なクエリ断片に直列化します。
符号化テスト用のゴールデンフィクスチャ
CIでJSONフィクスチャから安定したクエリ文字列を生成し、空白、アンパサンド、Unicodeが毎回同じように符号化されるようにします。
技術的な質問
JSONオブジェクトをURLクエリ文字列に変換するには?
object フィールド(または別名 json、data、params)に平坦なオブジェクトを送ってください。応答の query は & でつないだパーセント符号化 key=value ペアです。query_with_prefix は先頭に ? を付けます。
オブジェクトがネストしている場合は?
この機能は平坦なオブジェクトを要求します。ネスト構造は invalid_input で失敗するため、あいまいなURLを送る前にマップを平坦化または再設計できます。
JSONオブジェクトをクエリ文字列に変換する料金は?
ブラウザツールは無料です。APIリクエストは成功1回あたり $0.002 の前払いKIT残高を使い、無効な入力は課金されません。