json-fingerprint
Fingerprint JSON by calculating the hash (default: sha256) based on the shape of the JSON and its value types.
Install
npm install json-fingerprint
Usage
import {fingerprintJSON} from 'json-fingerprint';
const {hash, jsonPaths} = fingerprintJSON(`{"foo":"bar"}`)
const {hash, jsonPaths} = fingerprintJSON(`{"foo":"some string"}`)
Options
fingerprintJSON(`{"foo":"bar"}`)
fingerprintJSON({"foo":"bar"})
fingerprintJSON(`{"foo":"bar"}`, myCustomHashFn)
Result
const {hash, jsonPaths, source} = fingerprintJSON(`{"foo":"bar"}`)
hash
: fingerprint hash of the JSONjsonPaths
: internal JSON meta data (hash is calculated based on stringified jsonPaths)source
: original JSON provided as input
Custom hash function
import { createHash } from 'node:crypto';
function sha512(data) {
return createHash('sha512').update(data).digest('hex');
}
fingerprintJSON(`{"foo":"bar"}`, sha512);
CLI
hash a JSON file
npx json-fingerprint --file=package.json
$ c0f87b9c30f33f44e9723c192d1797c161fb53e22ce06615cb6738d2bfb7b25d
pipe to json-fingerprint
cat package.json | npx json-fingerprint
$ c0f87b9c30f33f44e9723c192d1797c161fb53e22ce06615cb6738d2bfb7b25d
wget -qO - https://github.com/chimurai/json-fingerprint/raw/main/package.json | npx json-fingerprint
$ c0f87b9c30f33f44e9723c192d1797c161fb53e22ce06615cb6738d2bfb7b25d