我有一个params字符串:
program_id=11792&percentage=5
我希望它将其转换为标准JSON:
{"program_id":"117902", "percentage":"5"}
答案 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)
如果您有兴趣,我写了一个通用解决方案: