Я пишу простую функцию PrettyPrint, которая только поверхностно пересекает строки и объекты.
Я думаю, что это довольно близко
это просто
{
"name": "Jon",
"facts": {
"car": "Ford",
"address": {
"city": "New York"
},
"watch": "Casio",
"other": {}
},
}
the}и пробел после этого перед закрывающей скобкой, как мне исправить это, чтобы он выводил, как если бы JSON.Stringify был?
{
"name": "Jon",
"facts": {
"car": "Ford",
"address": {
"city": "New York"
},
"watch": "Casio",
"other": {}
}
}
const exampleJson = {"name":"Jon","facts":{"car":"Ford","address":{"city":"New York"},"watch":"Casio","other": {}}};
const prettify = obj => {
tabs = n => Array(n).fill(' ').join('');
let traverse = (obj, tab = 1) => {
let markup = '{\n';
Object.entries(obj).forEach(kv => {
const [key, val] = kv;
if (typeof val === 'string') {
const { length } = Object.keys(val);
markup += `${tabs(tab)} "${key}": "${val}"`;
} else if (typeof val === 'object') {
const { length } = Object.keys(val);
if (length > 0) {
markup += `,\n${tabs(tab)} "${key}": ${traverse(val, tab+2)},\n`;
} else {
markup += `,\n${tabs(tab)} "${key}": {}`;
}
}
})
markup += `\n${tabs(tab - 1)}}`;
return markup;
}
let results = traverse(obj);
console.log(results);
}
prettify(exampleJson);