json-align

Library and script to pretty-print JSON files with values aligned together.

Usage no npm install needed!

<script type="module">
  import jsonAlign from 'https://cdn.skypack.dev/json-align';
</script>

README

json-align Build status npm package

This module provides a function and a command-line script that pretty-print JSON strings with consecutive values aligned at the same column for improved readability.

Before:


{
    "name": "json-align",
    "author": "James Nylen <jnylen@gmail.com>",
    "description": "Library and script to pretty-print JSON files with values aligned together.",
    "version": "...",
    "repository": {
        "type": "git",
        "url": "https://github.com/nylen/node-json-align"
    },
...

After:


{
    "name"        : "json-align",
    "author"      : "James Nylen <jnylen@gmail.com>",
    "description" : "Library and script to pretty-print JSON files with values aligned together.",
    "version"     : "...",
    "repository"  : {
        "type" : "git",
        "url"  : "https://github.com/nylen/node-json-align"
    },
...

Based on Douglas Crockford's json2.js.

Usage

In code (first do npm install json-align):

JSON.stringifyAligned = require('json-align');

On the command line (first do sudo npm install -g json-align):

json-align --help

The command-line script will output to stdout unless the -i/--in-place option is given.

Parameters

JSON.stringifyAligned(obj, [replacer], [spaces], [alignAllValues])
// or
JSON.stringifyAligned(obj, alignAllValues, [spaces])
  • replacer: Like in JSON.stringify, this is a value transformation function, or an array of properties to serialize.
  • spaces: Like in JSON.stringify, a number of spaces (or string) to indent by (the default is 4)
  • alignAllValues: By default, a new alignment group will be started each time an array or object value is encountered. If this option is set to true, then each object will have all of its values aligned together.

Examples

JSON.stringifyAligned({abc: 1, defgh: 2})
{
    "abc"   : 1,
    "defgh" : 2
}
JSON.stringifyAligned({abc: 1, defgh: [2,3,4], ijk: 5})
{
    "abc"   : 1,
    "defgh" : [
        2,
        3,
        4
    ],
    "ijk" : 5   // Note that this value is not aligned with the first two,
                // since there is an array or object value before it.
}
JSON.stringifyAligned({abc: 1, defgh: [2,3,4], ijk: 5}, null, 2, true)
{
  "abc"   : 1,
  "defgh" : [
    2,
    3,
    4
  ],
  "ijk"   : 5
}