日期:2014-05-16 浏览次数:20415 次
? ? Json格式在当前的Web项目开发中已经越来越重要,面对Json格式,我们时常需要将Json格式的数据转换成字符串形式,或者将字符串形式的数据转换为Json对象的数据。
?
? ? 在Java后台中,这种相互转换的工具已经有很多,例如:org.json,fastjson,gson等等,不胜枚举。所以这里不对此进行探讨,这里主要给出一个在天台中进行json和string进行转换的解决方案。
?
Json转换帮助类:
var JsonUtils = function(){
var cache = [];
var _json2String = function(jsonObj){
var type = typeof jsonObj;
if('object' == type){
if(Array == jsonObj.constructor){
type = "array";
}else if(RegExp == jsonObj.constructor){
type = "regexp";
}else{
type = "object";
}
}
switch(type){
case 'undefined' :
case 'unknown' :
return;
case 'function' :
case 'boolean' :
case 'regexp' :
return jsonObj.toString();
case 'number' :
return isFinite(jsonObj) ? jsonObj.toString() : 'null';
case 'string' :
return '"' + jsonObj.replace(/(\\|\")/g, "\\$1").replace(/\n|\t|\r/g, function(){
var a = arguments[0];
return (a == '\n')? '\\n' : (a == '\r') ? '\\r' : (a == '\t') ? '\\t' : "";
}) + '"';
case 'object' :
if(jsonObj === null)
return 'null';
var results = [];
for(var property in jsonObj){
if('parentNode' == property)
continue;
var value = _json2String(jsonObj[property]);
if(value != undefined){
var temp = _json2String(property);
results.push(temp + ':' + value);
}
}
return '{' + results.join(',') + '}';
case 'array' :
var results = [];
for(var i = 0; i < jsonObj.length; i += 1){
if(_isCache(jsonObj[i].tId)){
continue;
}else{
cache.push(jsonObj[i].tId);
var value = _json2String(jsonObj[i]);
if(value !== undefined){
results.push(value);
}
}
}
return '[' + results.join(',') + ']';
}
};
var _isCache = function(currentId){
for(var i = 0; i< cache.length; i += 1){
if(currentId === cache[i] ){
return true;
}
}
return false;
};
var _jsonStr2JsonObj = function(jsonStr){
try{
return $.parseJSON(jsonStr);
}catch(e){
throw "parse json string error";
}
};
return{
jsonStr2JsonObj : function(jsonStr){
return _jsonStr2JsonObj(jsonStr);
},
json2String : function(jsonObj){
return _json2String(jsonObj);
}
};
}();
?
测试代码:
var json = {'id' : '123'};
var jsonStr = JsonUtils.json2String(json);
alert(jsonStr);
?
?