查询字符串解析器 — 将 URL 查询字符串解析为 JSON
将 URL 查询字符串解析为结构化 JSON。支持嵌套参数、数组与编码 —— 全部在浏览器中运行,无上传。
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 这样的查询字符串,编码的是一个带嵌套与数组的结构化查询,但原始形态完全看不出这层结构。解析器只需一次粘贴,就能把这团乱麻解压成一棵格式化的 JSON 树。
不那么显然的一点是,方括号表示法为何成了事实标准。PHP 在 2000 年代初推广的方括号表示法,后来成为 URL 中编码嵌套参数的事实标准 —— Rails 采纳了它,Express.js 的中间件接受它,Web 上半数 REST API 都在产出它。扁平模式解析器给出一个简单的键值映射,适合调试一个直接的 API 调用。嵌套模式解析器从方括号表示法中重建出意图中的对象层级,这正是你在调试一个嵌套 5 层的参数、而 bug 恰好出在某个父键拼错时所需要的能力。
最终的交接:实际的工作流就是 DevTools 里的一次调试。你从 Network 标签页复制一个请求 URL —— 一段 300 字符、带着长查询字符串的文本 —— 你需要确认某个特定参数是否真的发出去、值是什么。解析器提取查询字符串、解码百分号编码,并把参数以可搜索、可折叠的树展示出来。不用手动按 & 拆分,不用猜测哪一段百分号序列解码成哪个字符,也不会因为在原始字符串里一扫而过就漏掉重复的键。
使用方法
粘贴查询字符串
粘贴完整 URL 或仅查询字符串部分。解析器会提取 `?` 之后的所有内容,并将其分解为扁平或嵌套的 JSON 对象。完整 URL 会自动拆分 —— 路径与哈希分别显示在独立面板中。
选择解析模式
扁平模式把 `a=1&b=2` 映射为 `{"a": "1", "b": "2"}`。嵌套模式使用方括号表示法(`a[b]=1` → `{"a": {"b": "1"}}`)。数组模式把重复的键(`a=1&a=2`)收集成 JSON 数组(`{"a": ["1", "2"]}`)。
复制或检视结果
把 JSON 复制到剪贴板,或用交互式树视图展开嵌套对象。对于嵌套层数较深的长查询字符串,树视图是更合适的选择。
常见问题
如何处理 URL 编码字符?
解析器在构建 JSON 输出前会自动解码百分号编码字符(`%20` → 空格,`%26` → & 符号)。双重编码的值(`%2520` → `%20`)只解码一次,输出中保留字面量 `%20`。若输入未编码,解析器会保持原样。
同一键出现多次会怎样?
扁平模式下,最后一个值生效 —— `a=1&a=2` 产出 `{"a": "2"}`。数组模式下,重复的键会被收集到 JSON 数组中 —— `{"a": ["1", "2"]}`。模式切换可选用与正在调试的服务器框架一致的行为。
如何处理空参数?
没有值的键(`a=&b=2`)会产出空字符串:`{"a": "", "b": "2"}`。完全没有等号的键(`a&b=2`)在 flag 模式下被视为布尔标志(`{"a": true, "b": "2"}`),在 strict 模式下视为带空字符串值的键。
能解析 OAuth 重定向 URI 中的查询字符串吗?
可以。OAuth 重定向常包含 fragment(哈希)部分 —— 解析器会把片段与查询字符串分开。对于令牌位于 fragment 中的 implicit-grant OAuth 流程,请把 fragment 单独粘贴到 URL 哈希面板中。
会校验参数名或值吗?
不会 —— 解析器按原样提取结构,不会按 schema 校验参数名、检查值类型或强制字符集。如需校验,把输出接到 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
- 完全在客户端运行。查询字符串始终保留在你的设备上。