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>