Serialize object to query string in JavaScript/jQuery

JavascriptJquerySerializationQuery String

Javascript Problem Overview


I'm trying to find information on how to serialize an object to query string format, but all my searches are drowning in results on how to go the other way (string/form/whatever to JSON).

I have

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

and I want

?one=first&two=second

Is there a good way to do this? I don't mind plugins or whatnots - if the code I find is not a plugin, I'll probably re-write it to one anyway...

Javascript Solutions


Solution 1 - Javascript

You want $.param(): http://api.jquery.com/jQuery.param/

Specifically, you want this:

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

When given something like this:

{a: 1, b : 23, c : "te!@#st"}

$.param will return this:

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

Solution 2 - Javascript

For a quick non-JQuery function...

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

Note this doesn't handle arrays or nested objects.

Solution 3 - Javascript

Another option might be node-querystring.

It's available in both npm and bower, which is why I have been using it.

Solution 4 - Javascript

Alternatively YUI has http://yuilibrary.com/yui/docs/api/classes/QueryString.html#method_stringify.

For example:

var data = { one: 'first', two: 'second' };
var result = Y.QueryString.stringify(data);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTomas AschanView Question on Stackoverflow
Solution 1 - JavascriptChris LaplanteView Answer on Stackoverflow
Solution 2 - JavascriptRich SmithView Answer on Stackoverflow
Solution 3 - JavascriptwprlView Answer on Stackoverflow
Solution 4 - JavascriptAlex StetsenkoView Answer on Stackoverflow