See the Release History for changes.
const stringify = require('{%= name %}');
let obj = { a: 'a', b: { c: { d: { e: 'f' } } } };
console.log(stringify(obj));
//=> [ 'a', 'b.c.d.e' ]
Include values in the result:
console.log(stringify(obj, { values: true }));
//=> { a: 'a', 'b.c.d.e': 'f' }
Keys with dots are automatically escaped with backslashes (this can be customized):
let obj = { 'a.b.c': { d: 'e' } };
console.log(stringify(obj));
//=> [ 'a\\.b\\.c.d' ]
console.log(stringify(obj, { values: true }));
//=> { 'a\\.b\\.c.d': 'e' }
Objects with arrays return the array indices as part of the paths:
let obj = { a: 'a', b: [{ c: { d: 'e' } }, { f: { g: 'h' } }] };
console.log(stringify(obj));
//=> [ 'a', 'b.0.c.d', 'b.1.f.g' ]
console.log(stringify(obj, { values: true }));
//=> { a: 'a', 'b.0.c.d': 'e', 'b.1.f.g': 'h' }
Type: string
Default: .
Custom separator to use for creating object paths (a.b.c
):
Example
let obj = { 'a.b.c': { d: 'e' } };
console.log(stringify(obj, { separator: '/' }));
//=> [ 'a.b.c/d' ]
console.log(stringify(obj, { separator: '/', values: true }));
//=> { 'a.b.c/d': 'e' }
Type: function
Default: adds \\
before dots
Custom function to use for escaping keys.
Example
let obj = { 'a.b.c': { d: 'e' } };
let escape = str => str.split('.').join('/');
console.log(stringify(obj, { escape }));
//=> [ 'a/b/c.d' ]
console.log(stringify(obj, { escape, values: true }));
//=> { 'a/b/c.d': 'e' }
- Redundant (parent) keys are no longer included in the output. Thus
{ a: { b: 'c' } }
now returns['a.b']
instead of['a', 'a.b']
.
- Added support for traversing into arrays.