JSON.stringrify的功能好强大(http://www.cnblogs.com/damonlan/archive/2012/03/13/2394787.html)。
今天要重复造下轮子。将JSON对象转成字串。
//@param json JSON OBJECT
//@param sb Array
function jsonToStr(json,sb){
for(var i = 0,len = json.length;i < len;i++){
var item = json[i];
var ol = objLen(item);
if(item.children){//有孩子的map
sb.push('{');
var m = 0;
for(var k in item){
if(k === 'children'){//处理孩子
sb.push('\"children\":[');
jsonToStr(item.children,sb);
sb.push(']');
}else{ //处理非孩子
sb.push('\"' + k + '\"' + ':\"' + item[k] + '\"');
}
if(m != ol - 1){
sb.push(',');
}
m++;
}
sb.push('}');
}else{
sb.push('{');
var n = 0;
for(var k in item){
sb.push('\"' + k + '\"' + ':\"' + item[k] + '\"');
if(n != ol -1){
sb.push(',');
}
n++;
}
sb.push('}');
}
if(i != len -1){
sb.push(',');
}
}
}
//get object length
function objLen(o){
var n,i = 0;
for(n in o){
if(o.hasOwnProperty(n)){
i++;
}
}
return i;
}
应用:
<HTML>
<script>
window.onload = function(){
document.getElementById("jsonStr").innerHTML = "";
var json = [{text:'text1',id:'1',children:[{text:'text11',id:'11',children:[{text:'text111',id:'121'},{text:'text112',id:'122'}]}]}];
var sb = [];
jsonToStr(json,sb);
document.getElementById("jsonStr").innerHTML = sb.join("");
}
</<script>>
<body>
<span id='jsonStr'></span>
</body>
</HTML>
本文介绍了一个手动实现JSON字符串化的方法,通过自定义函数将复杂的JSON对象转换为字符串形式,并能够处理包含子对象的情况。该方法适用于理解JSON.stringify的工作原理。
5138

被折叠的 条评论
为什么被折叠?



