Make Pretty JSON Output in Node.js
Published: Jul 16, 2020
Updated: Feb 16, 2024
Updated: Feb 16, 2024
By default, the JSON.stringify
function outputs minified JSON, see MDN docs. When logging or writing JSON, I usually like to make it look pretty. This can be done by tweaking the function arguments. The first argument is the data to convert. The second (optional) argument is a replacer function, we’ll leave this null. The third (optional) argument is the space to use when formatting the JSON, we’ll use 2 spaces.
Sample #
const fs = require('fs');
const path = require('path');
const process = require('process');
const makePrettyJson = (data) => {
const string = JSON.stringify(data, null, 2);
return string;
};
const writeDataToFile = (data, filePath) => {
try {
console.log(`Writing file ${filePath}`);
fs.writeFileSync(filePath, data);
} catch (error) {
console.error(`Error when writing file ${filePath}`, error);
}
};
const main = () => {
const todoItem = {
id: 1,
text: 'Buy milk and eggs',
done: false
};
// Make it pretty
const string = makePrettyJson(todoItem);
// Log it
console.log(string);
// Write it
const filePath = path.resolve(process.cwd(), 'output.json');
writeDataToFile(string, filePath);
};
main();
Output #
{
"id": 1,
"text": "Buy milk and eggs",
"done": false
}