Javascript使用jQuery将查询字符串转换为JSON并返回查询字符串

时间:2013-12-19 09:30:58

标签: javascript jquery json query-string

希望您能找到以下有助于将查询字符串转换为json对象的函数

var queryStringToJSON = function (url) {
    if (url === '')
        return '';
    var pairs = (url || location.search).slice(1).split('&');
    var result = {};
    for (var idx in pairs) {
        var pair = pairs[idx].split('=');
        if (!!pair[0])
            result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
    }
    return result;
}

用法:

获取当前的Windows查询字符串

var result = queryStringToJSON() // without any parameter

从自定义查询字符串中获取json:

var result = queryStringToJSON('?name=prem&age=30&HEIGHT=5.8')

输出 {name:"prem", age:"30", height:"5.8"} //All keys are converted into small letters

要将其转换回网址,您可以使用 jQuery param 方法

$.param(result)

要操纵您的查询字符串,您可以在JavaScript中简单地使用标准对象操作并再次使用$ .param方法

result.age=35;
delete result['name']; 

2 个答案:

答案 0 :(得分:1)

正常工作,但是如果您使用了url || location.search,那么您应该删除if(url === '') return ''或者它应该是,

var queryStringToJSON = function (url) {
    url = url || location.search;// url or location.search
    if (url === '')
        return '';// return if url and location.search not found
    // your remainig code
}

答案 1 :(得分:1)

或者......而不是:

for (var idx in pairs) {
    var pair = pairs[idx].split('=');
    if (!!pair[0])
        result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
}

尝试:

result = pairs.reduce(function(a,b) {
     var pair = b.split("=");
     a[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
     return a;
},{});

工作方式相同,但使用reduce()作为本机javascript函数,可能更快。