chtefi
8/29/2015 - 6:18 PM

Parse a JSON file using streams and a selector

Parse a JSON file using streams and a selector

var fs = require('fs');
var JSONStream = require('JSONStream');
var es = require('event-stream');

/*
format of entry:

{ "rows": [{
    "id": "xxx",
    "value": {
      "dependencies": { "toto": "1.0.0", "titi": "1.0.1" }
    }
  },
  ...
]}
*/

var SELECTOR = 'rows.*';

var inputFileName = process.argv[2] || './toto.json';

load(inputFileName);

function load(path, done) {
  var all = [];
  var parser = JSONStream.parse(SELECTOR);
  var count = 0;

  var res = fs.createReadStream(path)
    .pipe(parser)
    .pipe(es.map(function (data, cb) {
      var deps = '';
      if (data.value.dependencies) {
        deps = Object.keys(data.value.dependencies).join(' ');
      }
      cb(null, data.id + ' ' + deps + '\n');
    }))
    .pipe(process.stdout);
}