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

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

是的

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

我想

?one=first&two=second

有什么好办法吗?我不介意插件之类的东西——如果我找到的代码不是一个插件,我可能会重写它到一个无论如何..。

155733 次浏览

你想要 $.param(): http://api.jquery.com/jQuery.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

或者 YUI 有 http://yuilibrary.com/yui/docs/api/classes/QueryString.html#method_stringify

例如:

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

另一个选择可能是 Node-querystring

它在 npmbower都可用,这就是为什么我一直在使用它。

对于一个快速的非 JQuery 函数..。

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

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