hashable-cli
Generate consistent hashable JSON payload, great for piping through hash functions.
- sort arrays by predefined keys
- sort object by keys (optional)
- works as command line tool, module and in browser
- supports in-place modification of JSON file
- great for storing JSON in Git
Try it in the browser at https://chernjie.github.io/hashable/
Command Line Usage
Installation
npm i -g hashable-cli
Example
via stdin
cat file.json | npx hashable-cli > sorted.json
as argument
npx hashable-cli file.json > sorted.json
as argument and in-place overwriting file
npx hashable-cli --in-place file.json
using priority option for sorting arrays
npx hashable-cli --priority=id,label file.json
Module Usage
Installation
npm i --save hashable-cli
Example
import hashable from 'hashable-cli'
import md5 from "md5"
const sorted1 = hashable({ a: 'b', c: ['e', 'd']}, { sortObject: true })
const sorted2 = hashable({ c: ['d', 'e'], a: 'b'}, { sortObject: true })
const hash1 = md5(JSON.stringify(sorted1))
const hash2 = md5(JSON.stringify(sorted2))
return hash1 === hash2
Options
Command Line | Module | Default | Description |
---|---|---|---|
--in-place |
N/A | false |
to overwrite the original JSON file |
--sort-object |
sortObject |
false |
to sort object keys. |
--priority |
priority |
see priority | to specify array sorting priority (default priority is used if not specified). In CLI-mode, use comma-separated strings to specify multiple sort keys. e.g. --priority=id,label
|
License
see LICENSE
Alternatives you might prefer
- [safe-stable-stringify](https://www.npmjs.com/package/safe-stable-stringify) - Safe, deterministic and fast serialization alternative to `JSON.stringify`. Zero dependencies. ESM and CJS. 100% coverage.
- [json-stable-stringify](https://www.npmjs.com/package/json-stable-stringify) - deterministic version of `JSON.stringify()` so you can get a consistent hash from stringified results
- [fast-json-stable-stringify](https://www.npmjs.com/package/fast-json-stable-stringify) - Deterministic `JSON.stringify()` - a faster version of @substack's `json-stable-strigify` without `jsonify`.
- [fast-safe-stringify](https://www.npmjs.com/package/fast-safe-stringify) - Safe and fast serialization alternative to `JSON.stringify`.
- [json-stable-stringify-without-jsonify](https://www.npmjs.com/package/json-stable-stringify-without-jsonify)
- [sort-keys](https://www.npmjs.com/package/sort-keys) - Useful to get a deterministically ordered object, as the order of keys can vary between engines.
- [fast-stable-stringify](https://www.npmjs.com/package/fast-stable-stringify) - faster `json-stable-stringify`
- [json-hash](https://www.npmjs.com/package/json-hash) - Generates hash for JSON objects.
- [fastest-stable-stringify](https://www.npmjs.com/package/fastest-stable-stringify) - Deterministic `JSON.stringify()` - fastest stable JSON stringifier. This project combines `fast-json-stable-stringify` and `fast-stable-stringify` to create the fastest stable JSON stringifier
- [json-hashable](https://www.npmjs.com/package/json-hashable) - sorts object keys only, arrays remain the same. Returns a hash but no longer a strict equal of the input payload