ASP.NET: получить миллисекунды с 01.01.1970

Я написал модуль, который может это сделать, называется BFJ . В частности, метод bfj.match можно использовать для разбиения большого потока на дискретные куски JSON:

const bfj = require('bfj');
const fs = require('fs');

const stream = fs.createReadStream(filePath);

bfj.match(stream, (key, value, depth) => depth === 0, { ndjson: true })
  .on('data', object => {
    // do whatever you need to do with object
  })
  .on('dataError', error => {
    // a syntax error was found in the JSON
  })
  .on('error', error => {
    // some kind of operational error occurred
  })
  .on('end', error => {
    // finished processing the stream
  });

Здесь bfj.match возвращает читаемый поток объектного режима, который получит разобранный элементов данных и передано 3 аргумента:

  1. Читаемый поток, содержащий входной JSON.
  2. Предикат, который указывает, какие элементы из разбора JSON будут перенесены в результат stream.
  3. Объект опций, указывающий на то, что вход представляет собой JSON с разделителем строки (это значит, что формат B должен быть от вопроса, это не требуется для формата A).

При вызове bfj.match будет анализировать JSON из глубины входного потока - сначала, вызывая предикат с каждым значением, чтобы определить, будет ли этот элемент передаваться в поток результатов. Предикат передается по трем аргументам:

  1. Ключ свойства или индекс массива (это будет undefined для элементов верхнего уровня).
  2. Само значение.
  3. Глубина элемента в структуре JSON (ноль для элементов верхнего уровня).

Конечно, более сложный предикат также может быть использован по мере необходимости в соответствии с требованиями. Вы также можете передать строку или регулярное выражение вместо функции предиката, если вы хотите выполнить простые совпадения с ключами свойств.

13
задан Alexei Levenkov 23 June 2016 в 02:44
поделиться