fast-json
A lightning fast on the fly JSON parser able to return JSON values and structures from plain JSON as String
or Buffer
. It's much faster than JSON.parse() and doesn't require any extra memory allocation for the data processed.
Install
npm install fast-json
Usage
const FastJson = require('fast-json');
const data = JSON.stringify({
ireland: {
people: [{ name: 'Alex' }, { name: 'John' }, { name: 'Cian' }],
},
spain: {
people: [{ name: 'Antonio' }, { name: 'Juan' }, { name: 'Pedro' }],
},
'unknown.country': {
people: [{ name: 'Frank' }, { name: 'Paul' }],
},
});
const fastJson = new FastJson();
fastJson.on('ireland.people', (value) => {
console.log('ireland.people ->', value);
});
fastJson.on('spain.people[1].name', (value) => {
console.log('spain.people[1].name ->', value);
});
fastJson.on(['unknown.country', 'people', '0', 'name'], (value) => {
console.log(['unknown.country', 'people', '0', 'name'], value);
fastJson.skip();
});
fastJson.write(data);
fastJson.write(Buffer.from(data));
Performance
JSON file citylots.json of 189MB from https://github.com/zemirco/sf-city-lots-json.
- fast-json: 0.56s / 198MB RAM
- JSON.parse: 1.8s / 640MB RAM
- jsonparse: 15.0s / 1,100MB RAM (Only reading, it wasn't able to return a value)
TODO
- [Improvement] Tolerate malformed JSONs.
- [Feature] Process wildcards in paths.
- [Documentation] Document public interface and create branch gh-pages using jsdoc.
- [Documentation] More real life testing and examples.