我正在尝试查找有关如何将对象序列化以查询字符串格式的信息,但我所有的搜索都淹没在如何走另一条路(字符串/表单/任何 JSON)的结果中。
我有
{ one: 'first', two: 'second' }
而且我要
?one=first&two=second
有没有好的方法可以做到这一点?我不介意插件或诸如此类的东西——如果我找到的代码不是插件,我可能无论如何都会将它重写为一个......
我正在尝试查找有关如何将对象序列化以查询字符串格式的信息,但我所有的搜索都淹没在如何走另一条路(字符串/表单/任何 JSON)的结果中。
我有
{ one: 'first', two: 'second' }
而且我要
?one=first&two=second
有没有好的方法可以做到这一点?我不介意插件或诸如此类的东西——如果我找到的代码不是插件,我可能无论如何都会将它重写为一个......
你想要$.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
对于快速的非 JQuery 函数...
function jsonToQueryString(json) {
return '?' +
Object.keys(json).map(function(key) {
return encodeURIComponent(key) + '=' +
encodeURIComponent(json[key]);
}).join('&');
}
请注意,这不处理数组或嵌套对象。
另一种选择可能是node-querystring。
它在npm
和中都可用bower
,这就是我一直在使用它的原因。
或者 YUI 有http://yuilibrary.com/yui/docs/api/classes/QueryString.html#method_stringify。
例如:
var data = { one: 'first', two: 'second' };
var result = Y.QueryString.stringify(data);