Разберите строки запроса в JSON с помощью стандартного декодера URL URLSearchParams. Повторяющиеся ключи становятся JSON-массивами; одиночные значения остаются строками. Ведущие символы ? снимаются автоматически, чтобы можно было вставить сырой текст запроса или фрагмент, скопированный из полного URL.
Как это работает
Ведущий ? удаляется, если есть. Остаток передаётся в URLSearchParams, который делит по & и декодирует пары key=value по правилам application/x-www-form-urlencoded. Если ключ встречается один раз, значение JSON — строка; если несколько раз, значения собираются в JSON-массив с сохранением порядка вставки.
Когда использовать
- Изучать параметры запроса из URL, полученных агентами, и цепочек редиректов
- Превращать фрагменты
application/x-www-form-urlencodedв JSON для инструментов - Отлаживать OAuth callback, полезные нагрузки query webhook и теги аналитики
- Делать round-trip с build-query-string для проверки допущений о кодировании
Пример
page=2&q=hello&q=world становится {"page":"2","q":["hello","world"]} в поле вывода. Одиночный q=hello даёт "q":"hello" без обёртки-массива.
Ограничения
Вставляйте только часть запроса — не полный URL со схемой и хостом (уберите всё до ?). Вложенные JSON-объекты в строках запроса не поддерживаются; значения всегда строки (или массивы строк). Знаки плюса декодируются как пробелы по стандарту URL, что может отличаться от некоторых пользовательских парсеров.