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

Tom*_*han 149 javascript jquery serialization query-string

我正在尝试查找有关如何序列化对象以查询字符串格式的信息,但我的所有搜索都在结果中淹没了如何以其他方式(字符串/表单/任何JSON).

我有

{ one: 'first', two: 'second' }
Run Code Online (Sandbox Code Playgroud)

而且我要

?one=first&two=second
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?我不介意插件或其他东西 - 如果我发现的代码不是插件,我可能会重新写一个...

Chr*_*nte 229

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

具体来说,你想要这个:

var data = { one: 'first', two: 'second' };
var result = $.param(data);
Run Code Online (Sandbox Code Playgroud)

给出这样的东西:

{a: 1, b : 23, c : "te!@#st"}
Run Code Online (Sandbox Code Playgroud)

$.param 将返回此:

a=1&b=23&c=te!%40%23st
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果对象中有数组,则无法正确参数化. (8认同)
  • @crv:对.在这种情况下,JSON可能是最好的 (2认同)

Ric*_*ith 66

对于快速的非JQuery函数...

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

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


wpr*_*prl 15

另一个选项可能是node-querystring.

这是一个在两者都可npmbower,这就是为什么我一直在用它.