杨二

Machine repeats, Human creates

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

引子

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

过程

首先,获取参数字符串

location.search.slice(1);

这里用到了locationslice

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

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

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

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再转化回来。

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

最终代码

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();