Clarinet - Streaming JSON Parser
clarinet is a sax-like streaming parser for JSON for nodejs and the browser.
https://github.com/dscape/clarinet
this is how you write npm-top using it:
// all npm authors sorted by number of repos
var fs = require('fs')
, clarinet = require('../clarinet')
, parse_stream = clarinet.createStream()
, author = false
, authors = {}
;
parse_stream.on('openobject', function(name) {
if(name==='author') author=true;
});
parse_stream.on('key', function(name) {
if(name==='author') author=true;
});
parse_stream.on('end', function () {
var sorted = []
, i
;
for (var a in authors)
sorted.push([a, authors[a]]);
sorted.sort(function(a, b) { return a[1] - b[1]; });
i = sorted.length-1;
while(i!==-1) {
console.log(sorted.length-i, sorted[i]);
i--;
}
});
parse_stream.on('value', function(value) {
if(author) {
var current_count = authors[value];
if (current_count) authors[value] +=1;
else authors[value] = 1;
author=false;
}
});
fs.createReadStream(__dirname + '/npm.json').pipe(parse_stream);
Written by Nuno Job
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Browser
Authors
Filed Under
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#