Describes a JSON object metadata

The library takes a JSON object and returns it's metadata in several useful ways.
I've developed this package as part of the joola.io projectjoola.io to handle the transformation of JSON rich documents into NoSQL datastores. This process requires some descriptive attributes for each of the JSON nodes and this library assists in this process.
describe-json uses two libraries for traversing the JSON and parsing its metadata, traversetraverse which iterates over the JSON object and kindofkindof which is used to determine the typeof the value.
var djson = require('describe-json');
var obj = {
number: 1,
string: 'string',
date: new Date(),
array: [1, '2', [1, 2]],
nested: {
number: 1,
string: 'string',
date: new Date()
}
};
console.log(djson.describe(obj));
Results with{ number: 'number',
string: 'string',
date: 'date',
array: [ 'number', 'string', [ 'number', 'number' ] ],
nested: { number: 'number', string: 'string', date: 'date' }
}
Install
$ npm install describe-json
API
describe-json.describe (obj)
Generates a metadata representation of the provided JSON object.Accepts
obj
which is a JSON object and traverses it to return another JSON object containing the metadata.- Arrays are returned with their contents expanded and each replaced with the metadata of the array item value.
- Strings are parsed in attempt to cast them as a valid date.
- Root is not parsed and returned.
var djson = require('describe-json');
var obj = {
number: 1,
string: 'string',
date: new Date(),
array: [1, '2', [1, 2]],
nested: {
number: 1,
string: 'string',
date: new Date()
}
};
console.log(djson.describe(obj));
Results with{ number: 'number',
string: 'string',
date: 'date',
array: [ 'number', 'string', [ 'number', 'number' ] ],
nested: { number: 'number', string: 'string', date: 'date' }
}
describe-json.flatten (obj)
Returns an array
of [key, value]
containing all leaf node values.var obj = {
level0: 1,
a: {
b: {
c: {
d: 1
}
}
},
aa: {
bb: ['cc']
}
};
Results with:
[
[ 'level0', 1 ],
[ 'a.b.c.d', 1 ],
[ 'aa.bb', [ 'cc' ] ]
]