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

      

  • 相关阅读:
    二级缓存配置和原理
    延迟加载
    proxy和no-proxy的策略取值的区别
    inverse理解
    Java Spring mvc 操作 Redis 及 Redis 集群
    章节6 关联映射 (转载)
    8.28笔记
    8.26函数相关练习
    8.26 课堂自由笔记 还有考皮的老师笔录
    大话设计模式1.0.2-----策略模式 单一职责原则 和 开放-封闭原则
  • 原文地址:https://www.cnblogs.com/realwall/p/2199581.html
Copyright © 2011-2022 走看看