@toolsnap/json-beautify
v1.0.0
Published
Lightweight JSON formatting library — beautify, minify, and validate JSON with zero dependencies.
Downloads
75
Maintainers
Readme
@toolsnap/json-beautify
A lightweight, zero-dependency JSON formatting library for Node.js. Beautify, minify, and validate JSON with a clean, predictable API.
Installation
npm install @toolsnap/json-beautifyWhy This Library?
Working with JSON in Node.js is routine, but the built-in JSON.stringify only goes so far. You constantly need to: pretty-print API responses for debugging, minify payloads before transmission, and validate user-provided JSON with meaningful error information. This package wraps those three operations into a simple, consistent interface.
For an interactive online tool with syntax highlighting and error indicators, try the JSON Formatter on Risetop — it supports tree view, path copying, and batch formatting.
API
beautify(input, indent = 2)
Pretty-prints JSON with configurable indentation. Accepts either a JSON string or a plain JavaScript object.
const { beautify } = require('@toolsnap/json-beautify');
// From string
beautify('{"name":"Alice","age":30}');
// {
// "name": "Alice",
// "age": 30
// }
// From object
beautify({ users: [{ id: 1, role: 'admin' }] }, 4);
// {
// "users": [
// {
// "id": 1,
// "role": "admin"
// }
// ]
// }Throws if the input string contains invalid JSON.
minify(input)
Removes all unnecessary whitespace from a JSON string or object.
const { minify } = require('@toolsnap/json-beautify');
const original = '{\n "name": "test",\n "items": [1, 2, 3]\n}';
minify(original);
// '{"name":"test","items":[1,2,3]}'
console.log('Size saved:', original.length - minify(original).length, 'bytes');validate(input)
Validates a JSON string and returns detailed diagnostics including error position.
const { validate } = require('@toolsnap/json-beautify');
validate('{"valid": true}');
// { valid: true, error: null, data: { valid: true }, position: null }
validate('{"missing": ');
// { valid: false, error: 'Unexpected end of JSON input', data: null, position: { position: 12 } }The returned object always has four fields: valid, error, data, and position.
Real-World Examples
Logging API Responses
const { beautify } = require('@toolsnap/json-beautify');
// After fetching from an API
const response = await fetch('https://api.example.com/users');
const data = await response.json();
console.log(beautify(data, 2));Processing Configuration Files
const { beautify, minify, validate } = require('@toolsnap/json-beautify');
const fs = require('fs');
// Read, validate, reformat
const raw = fs.readFileSync('config.json', 'utf8');
const result = validate(raw);
if (!result.valid) {
console.error(`Invalid JSON at position ${JSON.stringify(result.position)}: ${result.error}`);
process.exit(1);
}
fs.writeFileSync('config.min.json', minify(result.data));
fs.writeFileSync('config.pretty.json', beautify(result.data, 4));HTTP Response Compression Helper
const { minify, validate } = require('@toolsnap/json-beautify');
function jsonMiddleware(req, res, next) {
const originalSend = res.json.bind(res);
res.json = (data) => {
const body = JSON.stringify(data);
if (validate(body).valid) {
res.setHeader('Content-Type', 'application/json');
res.send(minify(body));
} else {
res.status(500).send('Invalid JSON');
}
};
next();
}Browser Usage
This is a CommonJS module. Bundle with your preferred tool (webpack, esbuild, Rollup) for browser use.
Related Tools
- JSON Formatter — Free online JSON beautifier with syntax highlighting and error detection
- Developer Tools Collection — More free developer utilities
License
MIT
