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},`; } }