Javascript 如何将URI参数转换为JSON
我有一个params字符串:Javascript 如何将URI参数转换为JSON,javascript,jquery,Javascript,Jquery,我有一个params字符串: program_id=11792&percentage=5 我希望将其转换为标准JSON: {"program_id":"117902", "percentage":"5"} 一艘班轮: 更完整的解决方案: 将解析数字: “no=2”=>{no:2}与以前的版本相比{no:2} 将执行URI解码: “问候语=你好%3Dworld”=>{问候语:“你好世界”} 您可以使用此代码,但它不会检查任何错误: var url = "program_id=117
program_id=11792&percentage=5
我希望将其转换为标准JSON:
{"program_id":"117902", "percentage":"5"}
一艘班轮:
更完整的解决方案:
- 将解析数字:
=>“no=2”
与以前的版本相比{no:2}
{no:2}
- 将执行URI解码:
=>“问候语=你好%3Dworld”
{问候语:“你好世界”}
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
var url=“program_id=11792&percentage=5”;
var parts=url.split(“&”);
var paramsObj={};
对于(变量i=0;i
如果想要字符串而不是对象,可以对结果对象调用
JSON.stringify
。如果您感兴趣,我编写了一个通用解决方案:
该参数字符串看起来不正确decoded@Quentin对不起,我不知道我在问什么。我更新了标题。如果您不知道,可能还有JSON的副本!==我喜欢一般模式,但这是reduce的一个奇怪用法。这段代码虽然简单,但很难阅读,因为您不必要地将它涂抹到两行上。@Brandon这是reduce的一个非常常见的用法,我建议您也处理数字
m[o[0]]=o[1]==parseFloat(o[1],10)?parseFloat(o[1],10):o[1]
@megawac:好主意,我喜欢用紧凑的x==+x来检查它是否是一个数字。@megawac:它是否也应该尝试找出true
和false
可能不是字符串?这似乎是一个很滑的斜率。@ CristiMihai:你可能想考虑添加<代码>解码DeCurrimoTun> <代码>,把它变成一个普通的字符串。请参见下面@CristiMihai的相同解决方案
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;
}, {});
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
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"}