Соберите строки запроса из плоских JSON-объектов. Значения-массивы дают повторяющиеся ключи; свойства null и undefined пропускаются. В выводе нет ведущего знака вопроса — добавьте его при сборке полных URL для HTTP-клиентов, тестов и обёрток fetch агентов.
Как это работает
Корневой JSON-объект обходится ключ за ключом. Скалярные значения кодируются стандартным кодированием параметров URL (encodeURIComponent). Значения-массивы дают несколько пар key=value с одним именем ключа. Записи null и undefined полностью опускаются. Пары соединяются через & в стабильном порядке вставки ключей разобранного объекта.
Когда использовать
- Собирать URL GET-запросов в HTTP-клиентах агентов и интеграционных тестах
- Сериализовать поля форм для моков без ручного экранирования пробелов и символов
- Делать round-trip с инструментом parse-query-string для проверки поведения кодирования
- Строить подписанные URL callback webhook из структурированных объектов конфигурации
Пример
{"q":"hello world","page":2} сериализуется в q=hello+world&page=2 (пробелы могут выглядеть как + или %20 в зависимости от кодировщика). Массивы вроде {"tag":["a","b"]} становятся tag=a&tag=b.
Ограничения
Корневое значение JSON должно быть объектом — не массивом и не голой строкой. Вложенные объекты не выравниваются автоматически; сериализуйте вложенные структуры перед кодированием, если нужен один значение на ключ. Обработка идёт в браузере; очень большие объекты могут сериализоваться медленно.