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);