日期:2014-05-16 浏览次数:20339 次
? ? 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);?
?