Name |
Date |
Size |
#Lines |
LOC |
||
---|---|---|---|---|---|---|
.. | - | - | ||||
benchmark/ | 12-May-2024 | - | 170 | 160 | ||
example/ | 12-May-2024 | - | 24 | 18 | ||
test/ | 12-May-2024 | - | 129 | 105 | ||
.eslintrc.yml | D | 12-May-2024 | 562 | 27 | 26 | |
.npmignore | D | 12-May-2024 | 46 | 5 | 4 | |
.travis.yml | D | 12-May-2024 | 108 | 9 | 8 | |
LICENSE | D | 12-May-2024 | 1 KiB | 19 | 15 | |
README.md | D | 12-May-2024 | 2.8 KiB | 120 | 78 | |
index.js | D | 12-May-2024 | 1.8 KiB | 60 | 50 | |
package.json | D | 12-May-2024 | 2.1 KiB | 79 | 78 |
README.md
1# fast-json-stable-stringify 2 3Deterministic `JSON.stringify()` - a faster version of [@substack](https://github.com/substack)'s json-stable-strigify without [jsonify](https://github.com/substack/jsonify). 4 5You can also pass in a custom comparison function. 6 7[](https://travis-ci.org/epoberezkin/fast-json-stable-stringify) 8[](https://coveralls.io/github/epoberezkin/fast-json-stable-stringify?branch=master) 9 10# example 11 12``` js 13var stringify = require('fast-json-stable-stringify'); 14var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 }; 15console.log(stringify(obj)); 16``` 17 18output: 19 20``` 21{"a":3,"b":[{"x":4,"y":5,"z":6},7],"c":8} 22``` 23 24 25# methods 26 27``` js 28var stringify = require('fast-json-stable-stringify') 29``` 30 31## var str = stringify(obj, opts) 32 33Return a deterministic stringified string `str` from the object `obj`. 34 35 36## options 37 38### cmp 39 40If `opts` is given, you can supply an `opts.cmp` to have a custom comparison 41function for object keys. Your function `opts.cmp` is called with these 42parameters: 43 44``` js 45opts.cmp({ key: akey, value: avalue }, { key: bkey, value: bvalue }) 46``` 47 48For example, to sort on the object key names in reverse order you could write: 49 50``` js 51var stringify = require('fast-json-stable-stringify'); 52 53var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 }; 54var s = stringify(obj, function (a, b) { 55 return a.key < b.key ? 1 : -1; 56}); 57console.log(s); 58``` 59 60which results in the output string: 61 62``` 63{"c":8,"b":[{"z":6,"y":5,"x":4},7],"a":3} 64``` 65 66Or if you wanted to sort on the object values in reverse order, you could write: 67 68``` 69var stringify = require('fast-json-stable-stringify'); 70 71var obj = { d: 6, c: 5, b: [{z:3,y:2,x:1},9], a: 10 }; 72var s = stringify(obj, function (a, b) { 73 return a.value < b.value ? 1 : -1; 74}); 75console.log(s); 76``` 77 78which outputs: 79 80``` 81{"d":6,"c":5,"b":[{"z":3,"y":2,"x":1},9],"a":10} 82``` 83 84### cycles 85 86Pass `true` in `opts.cycles` to stringify circular property as `__cycle__` - the result will not be a valid JSON string in this case. 87 88TypeError will be thrown in case of circular object without this option. 89 90 91# install 92 93With [npm](https://npmjs.org) do: 94 95``` 96npm install fast-json-stable-stringify 97``` 98 99 100# benchmark 101 102To run benchmark (requires Node.js 6+): 103``` 104node benchmark 105``` 106 107Results: 108``` 109fast-json-stable-stringify x 17,189 ops/sec ±1.43% (83 runs sampled) 110json-stable-stringify x 13,634 ops/sec ±1.39% (85 runs sampled) 111fast-stable-stringify x 20,212 ops/sec ±1.20% (84 runs sampled) 112faster-stable-stringify x 15,549 ops/sec ±1.12% (84 runs sampled) 113The fastest is fast-stable-stringify 114``` 115 116 117# license 118 119[MIT](https://github.com/epoberezkin/fast-json-stable-stringify/blob/master/LICENSE) 120