Javascript ToString by introspection
by AndreaLigios
HTML
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<ul id="foo">
</ul>
JavaScript
function isArray(obj){
return obj!==null && Object.prototype.toString.call( obj ) === '[object Array]';
}
function toString(obj, x){
if (x===undefined) x=0;
if (obj===null) return "NULL";
var keys = Object.keys(obj);
var ret = "";
for (var i = 0; i < keys.length; i++) {
var val = obj[keys[i]];
if (ret!="") {ret+=",";};
var spacer = new Array(x+1).join( '\t' );
if (isArray(val)){
ret+= "\n" + spacer + "\"" + keys[i] + "\" : [" + toString(val,++x) + "]";
x--;
} else if (val !== null && typeof val === 'object') {
ret+= "\n" + spacer + "\"" + keys[i] + "\" : {" + toString(val,++x) + "\n" + spacer + "}";
x--;
} else {
ret += "\n" + spacer + "\"" + keys[i] + "\" : \"" + val + "\"";
}
}
return ret;
}
var markers = {};
markers["header"] = {id: 1, name: "markerHeader", fields : [{id:1,name:"fieldName11"},{id:2,name:"fieldName12"}]};
markers["detail"] = {id: 2, name: "markerDetail", fields : null};
markers["footer"] = {id: 3, name: "markerFooter", fields : null};
//markers["header"].fields[0]["foobar"]="foobaz";
//console.log(toString(markers["header"].fields));
for (var x in markers){
$("#foo").append("<li>" + toString(markers[x]) + "</li>");
console.log(toString(markers[x]));
}