我正在寻找如何将对象序列化为查询字符串格式的信息,但是所有的搜索结果都淹没在了反向操作(从字符串/表单/其他转换为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
&
,除非你明确设置了requestValidationMode="2.0"
。 - Amicable对于一个快速的非jQuery函数...
function jsonToQueryString(json) {
return '?' +
Object.keys(json).map(function(key) {
return encodeURIComponent(key) + '=' +
encodeURIComponent(json[key]);
}).join('&');
}
请注意,此方法不处理数组或嵌套对象。
if ( json[key] != null )
来省略空值。 - Valentin HObject.keys
的调用分配给一个params
变量,并在对象可能为空(即json={}
)的情况下使用return params.length && params.join('&') || ""
。 - t.888$.param
更好,因为 param 是针对表单而不是 URL 编码的。因此,使用 param 时,空格会变成 +
而不是 %20
,这可能会导致各种问题,特别是在 MVC 中。 - NibblyPigjsonToQueryString({ query: true, options: { nested: true }})
is return object[Object] :( ?query=true&options=%5Bobject%20Object%5D
- Aral Roca另外,YUI还有http://yuilibrary.com/yui/docs/api/classes/QueryString.html#method_stringify方法。
例如:
var data = { one: 'first', two: 'second' };
var result = Y.QueryString.stringify(data);