IT Market
Инструменты/Код/Документы/Query string в JSON онлайн — парсер параметров
QUERY → JSON

Конвертируйте URL параметры в JSON

Коротко об инструменте

Query string в JSON

Длинную ссылку из адресной строки или из строки лога глазами не разберёшь: тридцать параметров подряд сливаются в кашу. Вставьте хвост вида ?name=John&age=30&city=NYC в поле «Строка запроса» — и получите объект, где каждый ключ на своей строке. Процентная запись раскрывается обратно в читаемый текст, включая кириллицу. Разбор идёт на вашей стороне, поэтому рабочие ссылки из тикетов и логов можно смотреть, не задумываясь, куда они уедут. Смотрите также: собрать строку запроса обратно из объекта, раскодировать %20 и другие escape-последовательности, разложить полученный объект по отступам.

Как пользоваться

  1. Скопируйте адрес целиком или только его хвост после знака вопроса — поле «Строка запроса» принимает оба варианта.
  2. Вставьте текст в верхнее поле; подсказка ?name=John&age=30&city=NYC показывает ожидаемую форму записи.
  3. Нажмите «Конвертировать» — в поле «JSON на выходе» появится объект с отступами, по паре на строку.
  4. Сверьте число ключей с исходной ссылкой: параметр без значения даст пустую строку, а не исчезнет из результата.
  5. Скопируйте объект кнопкой «Копировать» и вставьте его в тикет, в тест или в тело нового запроса.

Вопросы и ответы

Почему числа в результате оказались строками?

В адресе не существует типов: page=2 — это два текстовых символа, а не число. Разбор честно отдаёт то, что было, поэтому вы видите "2", а не 2, и "false" вместо логического значения. Если объект пойдёт дальше в код, приведите нужные поля к числу или булеву типу сами — угадывание типов ломается на телефонах вида 0912 и на кодах товаров с ведущими нулями.

Что будет с повторяющимися ключами вроде tag=a&tag=b?

Обычный объект JSON не хранит два одинаковых ключа, поэтому в результате останется одно значение — то, что встретилось последним. Стандарт допускает повторы, и многие бэкенды собирают из них массив, но в плоском объекте это выразить нечем. Если в ссылке есть повторяющиеся параметры, выпишите их вручную в массив после разбора, иначе часть данных потеряется незаметно.

Нужно ли убирать домен и путь перед вставкой?

Удобнее вставлять только хвост после «?», как в подсказке поля. Полный адрес с протоколом и путём разбирается менее предсказуемо: первый сегмент до знака вопроса может попасть в результат отдельным ключом. Проще один раз обрезать строку до вопросительного знака — тогда в объекте окажутся ровно параметры и ничего лишнего.

Как читается знак плюса и кириллица в значениях?

Процентные последовательности вида %D0%9C раскрываются в обычные буквы, поэтому кириллические названия кампаний и поисковые запросы видно сразу. А вот «+» в старой форме кодирования означал пробел, и при декодировании процентов он таким и остаётся — плюсом. Если исходная ссылка пришла из HTML-формы, замените плюсы на пробелы вручную.

Что делать, если внутри параметра лежит закодированный JSON?

Такой параметр вернётся одной длинной строкой со скобками и кавычками внутри — это верно, ведь для адреса он и был текстом. Скопируйте значение отдельно и прогоните его через JSON Formatter + Validator, чтобы увидеть структуру. Двойное декодирование страница не делает: она раскрывает один слой процентов, а не вложенные форматы.

Безопасно ли вставлять сюда ссылку с сессионным токеном?

Сам разбор выполняется скриптом страницы и никуда не передаётся, так что содержимое поля остаётся в вашем браузере. Но ссылка с токеном опасна сама по себе: она уже осела в истории, в логах сервера и, возможно, в чате, откуда вы её взяли. Разбирайте её, если нужно понять инцидент, а затем отзывайте токен на стороне сервиса.

Примеры

Ссылка из рекламного отчёта
До: ?utm_source=yandex&utm_medium=cpc&utm_campaign=zima%20sale
После: { "utm_source": "yandex", "utm_medium": "cpc", "utm_campaign": "zima sale" }
Фильтр каталога из жалобы пользователя
До: ?page=2&per_page=50&status=active&q=
После: { "page": "2", "per_page": "50", "status": "active", "q": "" }