序列化对象以查询 JavaScript/jQuery 中的字符串

我试图找到有关如何将对象序列化为查询字符串格式的信息,但我的所有搜索都淹没在有关如何走另一条路(字符串/表单/任何东西到JSON)的结果中。

我有

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

我想要

?one=first&two=second

有没有一个好方法可以做到这一点?我不介意插件或其他什么 - 如果我找到的代码不是插件,我可能会把它重写为一个......


答案 1

您想要 : http://api.jquery.com/jQuery.param/$.param()

具体来说,您需要这样:

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

当给出这样的东西时:

{a: 1, b : 23, c : "te!@#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('&');
}

请注意,这不处理数组或嵌套对象。