function showNode(node, j) { var s = ''; for (var i = 0; i < j; i++) { s += ' ' } if (s != '') { s += '|--'; } console.log(s + node.name + ' -- ' + node.value); } function showTree(t, n, hsh) { showNode(t, n); var m = n + 1; if (t.children && t.children.length && m < 4) { hsh["children"] = []; for (var i = 0, l = t.children.length; i < l; i++) { var child = t.children[i]; var hsh_child = { 'id': child.srcID, 'name': child.name }; hsh.children.push(hsh_child); showTree(child, m, hsh_child); } } else { hsh["size"] = t.value; } } var p = this.root, m = 0, hsh = { 'id': p.srcID, 'name': p.name }; showTree(p, m, hsh); console.log(objectToString(hsh));