`
keren
  • 浏览: 1554625 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript json to string

阅读更多
能转化如下的数据:
case 1:
var o = {};
o.arr=[];
o.subo = {};
obj2str(o);
case 2:
var arr = [o];
obj2str(o);
case 3: 多层嵌套
var o = {};
		//o.name="so'me";
		o.so = {};
		o.arr1=[{a:"我",b:"you",'c':123,'d':234,"e":{e1:[],e2:{}}}];

		var arr = [o];
		var s = obj2str(arr);


function obj2str(o,flag,replace){
	var arr_start = "ARRAY_S";
	var arr_end = "ARRAY_E";
	if(flag==null){
		flag = "\"";//默认是双引号
	}
	if(replace==null){
		replace = true;
	}
	var r = [];
	if(typeof o == "string" || o == null) {
		return o;
	}
	//alert(typeof(o));
	if(typeof o == "object"){
		//alert(o.sort);
		if(!o.sort){
			//alert("in if");
			r[0]="{";
			for(var i in o){
				//alert(i+"="+o[i]);
				r[r.length]=flag;
				r[r.length]=i;
				r[r.length]=flag;
				r[r.length]=":";
				r[r.length]=flag;
				r[r.length]=obj2str(o[i],flag,false);
				r[r.length]=flag;
				r[r.length]=",";
			}
			r[r.length-1]="}";
		}else{//数组元素
			r[0]= arr_start;
			for(var i =0;i<o.length;i++){
				r[r.length]=flag;
				r[r.length]=obj2str(o[i],flag,false);
				r[r.length]=flag;
				r[r.length]=",";
			}
			r[r.length-1]=arr_end;
		}
	 
		var str = r.join("");
		//alert("结果:"+str);
		//针对{} 就是没有属性的对象,会返回单个 },把它补齐
		if(str=="}"){
			str="{}";
		}
		//针对[] 就是长度为0的数组,会返回单个 ],把它补齐
		if(str==arr_end){
			str=arr_start+arr_end;
		}

		if(replace){//在递归子循环中不替换,到最后统一替换
			//替换掉 "{ }" "[ ]"
			var reg=new RegExp(flag+"{","g"); // 包含字符 "{
			str = str.replace(reg,"{");

			reg=new RegExp("}"+flag,"g");// 包含字符 }"
			str = str.replace(reg,"}");
			
			reg=new RegExp(flag+arr_start,"g"); // 包含字符 "[
			str = str.replace(reg,"[");

			reg=new RegExp(arr_end+flag,"g"); // 包含字符 ]"
			str = str.replace(reg,"]");

			//alert(str);

			if(str.indexOf(arr_start+"{")>-1){
				reg=new RegExp(arr_start+"{","g"); 
				str = str.replace(reg,"[{");
			}
			if(str.indexOf("}"+arr_end)>-1){
				reg=new RegExp("}"+arr_end,"g"); 
				str = str.replace(reg,"}]");
			}
		}
		//alert("--"+str);
		return str;
	}
	return o.toString();
}

function str2obj(json){ 
	return eval("("+json+")"); 
}
分享到:
评论
1 楼 lqixv 2011-05-30  
直接用 json 官方网站中推荐的 json.js 里的 json2.js,里面提供了方法,直接引用即可

相关推荐

Global site tag (gtag.js) - Google Analytics