var aaa = {
bbb : 123,
ccc : 'cccc',
ddd : new Boolean("true"),
eee : {
eee1 : 987,
eee2 : 'eeestr',
eee3 : {
fff1 : 346,
fff2 : 'ffffff222',
fff3 : new Number(23)
}
}
};
function toParameter(obj){
if(obj === null || obj === undefined){
return '';
}
if(obj instanceof Number || obj instanceof Boolean || obj instanceof String){
return obj.valueOf();
}
var url = [];
var value;
for(var name in obj){
switch(typeof obj[name]){
case 'string' :
case 'number' :
case 'boolean' :
value = obj[name].toString();
break;
case 'object' :
value = arguments.callee(obj[name]);
break;
case 'function' :
case 'undefined' :
value = '';
}
url.push(name + '=' + encodeURIComponent(value));
}
return url.join('&');
}
function parseParameter(para){
if(para.indexOf('=') == -1){
return para;
}
var obj = {}, len, i, onePara, name, value;
paraArr = para.split('&');
len = paraArr.length;
for(i = 0; i < len; i++){
onePara = paraArr[i];
onePara = onePara.split('=');
name = onePara[0];
value = arguments.callee(decodeURIComponent(onePara[1]));
obj[name] = value;
}
return obj;
}
var parameter = toParameter(aaa);
alert(parseParameter(parameter).eee.eee3.fff3);