查询字符串参数转化为JSON对象

引子

工作中经常需要获取浏览器地址栏URL的参数,常用的套路便是将这些参数转化为键值对,方法有许多,我喜欢简单明了,所以尝试自己总结下。

过程

首先,获取参数字符串

1
location.search.slice(1);

这里用到了locationslice

然后,将参数转为数组,然后在数组里做文章。

1
var pairs=location.search.slice(1).split('&');

接下来,使用forEach遍历pairs,并在每次遍历时使用=分隔符,来提取键值对。当然,一些可能遇到的场景也需要考虑下,比如,值为空使用decodeURIComponent解码一下

1
2
3
4
5
6
7
var pairs = location.search.slice(1).split('&');
var result = {};
pairs.forEach(function(pair) {
pair = pair.split('=');
result[pair[0]] = decodeURIComponent(pair[1] || '');
});

最后一步,相当简单,使用JSON.stringify解析一下,然后用JSON.parse再转化回来。

1
JSON.parse(JSON.stringify(result));

最终代码

1
2
3
4
5
6
7
8
9
10
11
12
13
function QueryStringToJSON() {
var pairs = location.search.slice(1).split('&');
var result = {};
pairs.forEach(function(pair) {
pair = pair.split('=');
result[pair[0]] = decodeURIComponent(pair[1] || '');
});
return JSON.parse(JSON.stringify(result));
}
var query_string = QueryStringToJSON();

微信环境下长按识别或保存

微信支付二维码
支付宝支付二维码