Сериализовать объект для строки запроса в JavaScript/jQuery - программирование

Сериализовать объект для строки запроса в JavaScript/jQuery

Я пытаюсь найти информацию о том, как сериализовать объект в формате строки запроса, но все мои запросы тонут в результатах о том, как идти другим путем (строка/форма/что-то в JSON).

У меня

{ one: 'first', two: 'second' }

и я хочу

?one=first&two=second

Есть ли хороший способ сделать это? Я не против плагинов или whatnots - если код, который я нахожу, не является плагином, я, вероятно, переписал бы его одному...

4b9b3361

Ответ 1

Вы хотите $.param(): http://api.jquery.com/jQuery.param/

В частности, вы хотите:

var data = { one: 'first', two: 'second' };
var result = $.param(data);

Когда вы получите что-то вроде этого:

{a: 1, b : 23, c : "[email protected]#st"}

$.param вернет это:

a=1&b=23&c=te!%40%23st

Ответ 2

Для быстрой функции без JQuery...

function jsonToQueryString(json) {
    return '?' + 
        Object.keys(json).map(function(key) {
            return encodeURIComponent(key) + '=' +
                encodeURIComponent(json[key]);
        }).join('&');
}

Обратите внимание, что это не обрабатывает массивы или вложенные объекты.

Ответ 3

Другим вариантом может быть node -querystring.

Он доступен как в npm, так и в bower, поэтому я его использовал.