首页 > URL参数还原成JSON对象

URL参数还原成JSON对象

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'}

网上找的,看着不错

【热门文章】
【热门文章】