const prettyJSON = function(obj) {
if(typeof obj == "string"){
try {
obj = JSON.parse(obj)
} catch (error) {
console.log(error);
return false;
}
}
return obj ? valueOf(obj).slice(0, -1)+"" : "";
}
function getSpaces(count){
var spaces = "";
for (let i = 0; i < count; i++) {
spaces +=" ";
}
return spaces;
}
function arrayToString(arr, count = 0, fromObj = false) {
count++;
var spaces = getSpaces(count);
var sp = " ";
if(!fromObj) {
sp = spaces;
}
count++;
var str = `${sp}[`;
arr.forEach(el => {
str += `
${valueOf(el,count)}`;
})
return `${str.slice(0, -1)}
${spaces}],`;
}
function objectToString(obj, count = 0, fromObj = false) {
count++;
var spaces = getSpaces(count);
var sp = " ";
if(!fromObj) {
sp = spaces;
}
var str = `${sp}{`;
var spacesM = spaces+" ";
Object.keys(obj).forEach(k => {
str += `
${spacesM}"${k}":${valueOf(obj[k],count, true)}`;
})
str = `${str.slice(0, -1)}
${spaces}},`;
return str;
}
function valueOf(obj, count = 0, fromObj = false) {
count++;
let spaces = getSpaces(count);
if(fromObj) spaces = " ";
let type = obj === null ? "null" : typeof obj;
switch (type) {
case "object":
if(Array.isArray(obj)) return arrayToString(obj, count, fromObj)
return objectToString(obj, count, fromObj);
case "string": return `${spaces}"${obj}",`;
case "boolean": return `${spaces}${obj},`;
default: return `${spaces}${obj},`;
}
}