如何将URI参数转换为JSON

时间:2013-12-13 21:16:29

标签: javascript jquery

我有一个params字符串:

program_id=11792&percentage=5

我希望它将其转换为标准JSON:

{"program_id":"117902", "percentage":"5"}

4 个答案:

答案 0 :(得分:4)

一个班轮:

var json = params.split('&').map(function(i) { return i.split('=');}).reduce(function(m,o){ m[o[0]] = o[1]; return m;},{});

更完整的解决方案:

params.split('&').map(function(i) { 
    return i.split('=');
}).reduce(function(memo, i) { 
    memo[i[0]] = i[1] == +i[1] ? parseFloat(i[1],10) : decodeURIComponent(i[1]); 
    return memo;
}, {});
  • 将解析数字:

    "no=2" => { no: 2 }与之前的版本{ no: "2" }相比。

  • 将执行URI解码:

    "greeting=hello%3Dworld" => { greeting: "hello world" }

答案 1 :(得分:0)

您可以使用此代码,但不检查是否有任何错误:

var url = "program_id=11792&percentage=5";
var parts = url.split("&");
var paramsObj = {};
for (var i = 0; i < parts.length; i++) {
   var keyAndValue = parts[i].split("=");
   paramsObj[keyAndValue[0]] = paramsObj[keyAndValue[1]];
}
console.log(paramsObj); // here's your object

答案 2 :(得分:0)

var convert = function(params) {
    return params.split("&").map(function(item) {
        return item.split("=");
    }).reduce(function(obj, pair) {
        obj[pair[0]] = decodeURIComponent(pair[1]);
        return obj;
    }, {});
};

convert("program_id=11792&percentage=5&name=Andrew%20Wei");
//=> Object {program_id: "11792", percentage: "5", name: "Andrew Wei"}

如果您想要字符串而不是对象,可以在结果对象上调用JSON.stringify

答案 3 :(得分:-1)

如果您有兴趣,我写了一个通用解决方案:

https://github.com/gburghardt/cerealizer