zoukankan      html  css  js  c++  java
  • Javascript通过URL传递JSON

    function toParameter(obj){
    	if(obj instanceof Number || obj instanceof String || obj instanceof Boolean){
    		return obj.valueOf();	
    	}
        var arr = [], arrStr, arrlen, i;  
        if(obj instanceof Array){
            arrlen = obj.length;
            for(i = 0; i < arrlen; i++){
                if(typeof obj[i] == 'string' || typeof obj[i] == 'number' || typeof obj[i] == 'boolean'){
    				arr.push(obj[i]);
    			}else if(obj[i] instanceof Array){
                    arr.push(encodeURIComponent(arguments.callee(obj[i])));
                }else if(obj[i] instanceof Object){ //Array's instance is also a instance of Object
    	    		arr.push(encodeURIComponent(arguments.callee(obj[i])));
    	    	}else{
    		}
            }
    		return arr.join('@');
        }else if(obj instanceof Object){
    		var name, value;
    		for(name in obj){
    			switch(typeof obj[name]){
    				case 'string':
    				case 'number':
    				case 'boolean':
    						value = obj[name];
    						break;
    				case 'object':
    						value = arguments.callee(obj[name]);
    						break;
    				case 'undefined':
    				case 'function':
    						value = '';
    						break;
    			}
    			arr.push(name + '=' + encodeURIComponent(value));
    		}
    		return arr.join('&');
    	}
    }
    
    function parseParameter(url){
    	if(url.indexOf('@') > -1){
    		var arr = [], i, arrlen, resultArr = [];
    		arr = url.split('@');
    		arrlen = arr.length;
    		for(i = 0; i < arrlen; i++){
    			var str = decodeURIComponent(arr[i]);
    			if(str.indexOf('=') < 0 && str.indexOf('@') < 0 && str.indexOf('&') < 0){
    				resultArr.push(str);
    			}else{
    				var element = arguments.callee(str);
    				var resultLen = resultArr.length;
    				resultArr[resultLen] = element; //push just for string
    			}
    		}
    		return resultArr;
    	}else if(url.indexOf('&') > -1){
    		var arr = [], i, arrlen, obj = {}, oneKeyValue;
    		arr = url.split('&');
    		arrlen = arr.length;
    		for(i = 0; i < arrlen; i++){
    			oneKeyValue = arr[i];
    			oneKeyValue = oneKeyValue.split('=');
    			var name = oneKeyValue[0];
    			var value = decodeURIComponent(oneKeyValue[1]);
    			if(value.indexOf('&') > -1 || value.indexOf('@') > -1 || value.indexOf('=') > -1){
    				value = arguments.callee(value);
    			}
    			obj[name] = value;
    		}
    		return obj;
    	}
    }
     //测试用例1
     var json = [{
        aaa : 'aaaa1',
        bbb : 323
     }, {
        aaa : 'aaaa2',
        bbb : [
    		'b22', 2, true
    	]
     }];
    //测试用例2
    var obj = [[1, 'aa'],[2,'bb'],{c : 3, d : ['d1', 'd2']}];
    var url = toParameter(obj);
    var aa = parseParameter(url);
    alert(aa);
    

      

  • 相关阅读:
    三元运算符嵌套问题
    tp框架利用redis存储session
    PHP date('W')遇到跨年问题
    AES加解密 集成 spring MVC
    python SMTP 发送邮件
    mysql数据库安装过程
    (转)Apache启动过程
    apache服务器全局配置详解
    Apache 的 httpd.conf 详解(很实用)
    安装apache遇到的问题总结
  • 原文地址:https://www.cnblogs.com/realwall/p/2199581.html
Copyright © 2011-2022 走看看