@diotoborg/ipsam-sequi v2.9.101
@diotoborg/ipsam-sequi
Deterministic version of
JSON.stringify()
, so you can get a consistent hash from stringified results.
Similar to json-stable-stringify but:
- No Dependencies. Minimal as possible.
- Better cycles detection.
- Support serialization for object without
.toJSON
(such asRegExp
). - Provides built-in TypeScript declarations.
Install
npm install @diotoborg/ipsam-sequi --save
Usage
const stringify = require('@diotoborg/ipsam-sequi')
const obj = { c: 8, b: [{ z: 6, y: 5, x: 4 }, 7], a: 3 }
console.log(stringify(obj))
// => {"a":3,"b":[{"x":4,"y":5,"z":6},7],"c":8}
API
stringify(<obj>, opts)
obj
Required
Type: object
The input object
to be serialized.
opts
opts.stringify
Type: function
Default: JSON.stringify
Determinate how to stringify primitives values.
opts.cycles
Type: boolean
Default: false
Determinate how to resolve cycles.
Under true
, when a cycle is detected, [Circular]
will be inserted in the node.
opts.compare
Type: function
Custom comparison function for object keys.
Your function opts.compare
is called with these parameters:
opts.cmp({ key: akey, value: avalue }, { key: bkey, value: bvalue })
For example, to sort on the object key names in reverse order you could write:
const stringify = require('@diotoborg/ipsam-sequi')
const obj = { c: 8, b: [{z: 6,y: 5,x: 4}, 7], a: 3 }
const objSerializer = stringify(obj, function (a, b) {
return a.key < b.key ? 1 : -1
})
console.log(objSerializer)
// => {"c":8,"b":[{"z":6,"y":5,"x":4},7],"a":3}
Or if you wanted to sort on the object values in reverse order, you could write:
const stringify = require('@diotoborg/ipsam-sequi')
const obj = { d: 6, c: 5, b: [{ z: 3, y: 2, x: 1 }, 9], a: 10 }
const objtSerializer = stringify(obj, function (a, b) {
return a.value < b.value ? 1 : -1
})
console.log(objtSerializer)
// => {"d":6,"c":5,"b":[{"z":3,"y":2,"x":1},9],"a":10}
opts.space
Type: string
Default: ''
If you specify opts.space
, it will indent the output for pretty-printing.
Valid values are strings (e.g. {space: \t}
). For example:
const stringify = require('@diotoborg/ipsam-sequi')
const obj = { b: 1, a: { foo: 'bar', and: [1, 2, 3] } }
const objSerializer = stringify(obj, { space: ' ' })
console.log(objSerializer)
// => {
// "a": {
// "and": [
// 1,
// 2,
// 3
// ],
// "foo": "bar"
// },
// "b": 1
// }
opts.replacer
Type: function
The replacer parameter is a function opts.replacer(key, value)
that behaves
the same as the replacer
from the core JSON object.
Related
- sort-keys-recursive: Sort the keys of an array/object recursively.
License
MIT © Kiko Beats.
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago