normjson

1.4.0 • Public • Published

NormJSON

Travis CI

Convert JS values into deterministic JSON. It can sort keys in ascending order or according to scheme. Normjson is useful for hash algorithms to generate the same hashsum in different js environments.

Installation

Install via npm

npm i normjson

Require from unpkg.com:

<script src="https://unpkg.com/normjson@1.3.0/dist/normjson.js"
    integrity="St/z56cj/u6TzqsuQ/H0/ve0ZreNswh5UbYrgSCQyN58F/0s0FN6E+Ak3a8ZAy5q"
></script> 
<script src="https://unpkg.com/normjson@1.3.0/dist/normjson.min.js"
    integrity="qPKIijQ3VZP98fNmZUtRxsDHGdqBNkAJLyg5jWwvQAhr16EBJqkkqFfpTkNmPM6h"
></script> 

Example

Normjson will create the same JSON string from objects with different props order and JSON.stringify does not:

const object1 = {a: 1, b: 2};
const object2 = {b: 2, a: 1};
 
JSON.stringify(object1) === JSON.stringify(object2); // => false
normjson(object1) === normjson(object2); // => true

Scheme types

No scheme

If no scheme specified then properties sorting by name in ascending order:

normjson({c: 3, a:1, b:2});

Coverts to:

{"a":1,"b":2,"c":3}

Scheme could be presented in several ways.

Array scheme

Array scheme contains list of properties which should be converted in specified order.

normjson({a:1, b:2, c: 3}, ['b', 'a']);

Convets to:

{"b":2,"a":1}

It allow to specify rest of props with true and sorts them by key names:

normjson({b: 3, c: 2, a: 1}, ['c', true]);

Coverts to:

{"c":3,"a":1,"b":2}

Rest of props could be set as the first, the last or in the middle.

Object scheme

Object scheme allow nesting.

normjson({a:{b: 1, c:2}}, {a:{c: true}});

Coverts to:

{"a":{"c":2}}

Function scheme

Function as a scheme should return other type of scheme (array, object, no). The first argument is a document.

License

MIT.

Readme

Keywords

none

Package Sidebar

Install

npm i normjson

Weekly Downloads

2

Version

1.4.0

License

MIT

Last publish

Collaborators

  • rumkin