1. URL参数:
user.name.firstname=li&user.name.lastname=lei&user.age=26&user.love[0].name=hanmeimei
请问如何将上面的URL参数解析成JSON对象?期望解析结果:
{
"user": {
"name": {
"firstname": "LI",
"lastname": "LEI"
},
"age": 26,
"love": [
{
"name": "hanmeimei"
}
]
}
}
2. 如果对于上面URL参数解析出来的JSON不确定有几层又该如何操作
如果是nodejs请参考querystring.parse
ps:
url中问号后面的部分被称作"query string", 所以如果你搜索"querystring json"你很快就能找到答案.
function _parserUrl(tourl)//解析URL并转换为json形式
{
if(!tourl)return;
var paramsArr=tourl.split('?')[1].split('&');
var args={},argsStr=[],param,name,value;
args['url']=encodeURIComponent(tourl.split('?')[0]); //首先载入url,问号"?"前面的部分
for(var i=0;i<paramsArr.length;i++){
param=paramsArr[i].split('=');
name=param[0],value=param[1];
if(name=="")name="unkown";
if(typeof args[name]=="undefined"){ //参数尚不存在
args[name]=value;
}else if(typeof args[name]=="string"){ //参数已经存在则保存为数组
args[name]=[args[name]];
args[name].push(value);
}else{ //已经是数组的
args[name].push(value);
}
}
var showArg=function(x){ //转换不同数据的显示方式
if(typeof(x)=="string"&&!/\d+/.test(x)) return "'"+x+"'"; //字符串
if(x instanceof Array) return "["+x+"]"; //数组
return x; //数字
}
args.toString=function(){//组装成json格式
for(var i in args) argsStr.push(i+':'+showArg(args[i]));
return '{'+argsStr.join(',')+'}';
}
return args; //以json格式返回获取的所有参数
}
返回的args是json形式{x1:1,x2:'2'}
网上找的,看着不错