日期:2014-05-16  浏览次数:20474 次

string与数组和Json互转

数组和Json转字符串好处理,但是如果字符串转数组或Json时,使用eval时,如果数组中还包含[],或者Json中还包含{}时,总是报错。才疏学浅,错误不会解决,只能自己写方法实现相关转换

// 把store中数据,转换为字符串
// 由于[]再套用[]时使用eval出错,所以使用标识符;x?作为分隔符,其中level作为第几级的参数
function changeArrayToString(array, level) {
	var str = "";
	for (var i = 0; i < array.length; i++) {
		var jsonData = array[i];
		str += bmJsonToString(jsonData) + ';' + level + '?';
	}
	if (str != "") {
		str = str.substring(0, str.length - 3);
	}
	return str;
};

?

// 把字符串,转换为store数组
function changeStringToArray(str, level) {
	if (str == undefined || str == null || str == "") {
		return null;
	} else {
		var array = str.split(";" + level + "?");
		var conditionArray = new Array();
		for (var i = 0; i < array.length; i++) {
			var obj = changeStringToJson(array[i], level);
			conditionArray.push(obj);
		}
		return conditionArray;
	}
};

?

//把json中的数据转换为string
//由于{}中再套{}时,使用eval出错,所以使用标志符|x!作为分隔符,其中level作为第几级的参数
function changeJsonToString(json, level){
		if(json == undefined || json == null){
		return "";
	}else{
		var str = "";
		for (var k in json) {
			str += '"'+k+'":';
			str += '"'+json[k]+'"|'+level+"!"
		}
		str = str.substring(0,str.length-3);
		return '{'+str+'}';
	}
};

?

// 把字符串转为为json
function changeStringToJson(str, level) {
	if (str == undefined || str == null || str == "") {
		return null;
	} else {
		if (str.length > 2) {
			var json = {};
			str = str.substring(1, str.length - 1);
			var array = str.split('|' + level + '!');
			for (var i = 0; i < array.length; i++) {
				var info = array[i].split(':');
				if (info.length == 2) {
					var key = info[0].substring(1,info[0].length-1);
					var value = info[1].substring(1,info[1].length-1);
					json[key] = value;
				}
			}
			return json;
		}
	}
	return null;
};

?真的是学艺不精呀,既然使用Ext为什么把Ext的一些方法给忘了

function changeArrayToString(array) {
	var str = "";
	for (var i = 0; i < array.length; i++) {
		var jsonData = array[i];
		str += changeJsonToString(jsonData) + ',';//';' + level + '?';
	}
	if (str != "") {
		str = "["+str.substring(0, str.length - 1)+"]"
	}
	return str;
};
// 把字符串,转换为store数组
function changeStringToArray(str) {
	if (str == undefined || str == null || str == "") {
		return null;
	} else {
		return Ext.decode(str);
	}
};
// 把json中的数据转换为string
function changeJsonToString(json) {
	if (json == undefined || json == null) {
		return "";
	} else {
		return Ext.encode(json);
	}
};
// 把字符串转为为json
function changeStringToJson(str) {
	if (str == undefined || str == null || str == "") {
		return null;
	} else {
		return Ext.decode(str, true)
	}
	return null;
};

?