Парсить большой файл json в nodejs

Для начала скажу, что я зарабатываю через вот этого брокера, проверен он временем! А вот хороший пример заработка, человек зарабатывает через интернет МНОГО МНОГО МНОГО и показывает все на примерах, переходи и читай! Добавь страницу в закладки. А теперь читаете информацию ниже и пишите свой отзыв

У меня есть файл, который хранит много JavaScript-объектов в виде json и мне нужно читать данный файл, создавать каждому из объектов, и что-то делать с ними (вставить их в БД в моем случае). Объекты JavaScript могут быть представлены в формате:

Формат:

[{name: 'thing1'}, .... {name: 'thing999999999'}] 

или Формат B:

{name: 'thing1'}         // <== My choice. ... {name: 'thing999999999'} 

Обратите внимание, что ... свидетельствует большое json-объектов. Я знал, я мог бы прочитать весь файл в память и затем использовать JSON.parse() как это:

fs.readFile(filePath, 'utf-8', function (err, fileContents) {   if (err) throw err;   console.log(JSON.parse(fileContents)); }); 

Тем не менее, файл может быть очень большим, я бы предпочел, чтобы использовать поток для выполнения этой задачи. Проблему я вижу с собой поток, что содержимое файла может быть разбита на блоки данных в любой момент, так как я могу использовать JSON.parse() на такие объекты?

В идеале каждый объект должен рассматриваться как отдельный кусок данных, но я не уверен, о том, как это сделать.

var importStream = fs.createReadStream(filePath, {flags: 'r', encoding: 'utf-8'}); importStream.on('data', function(chunk) {      var pleaseBeAJSObject = JSON.parse(chunk);                // insert pleaseBeAJSObject in a database }); importStream.on('end', function(item) {    console.log("Woot, imported objects into the database!"); });*/ 

Обратите внимание, я хотел бы предотвратить считывание всего файла в память. Эффективность времени вопрос не ко мне. Да, я мог бы попробовать прочитать несколько объектов сразу и вставить их все сразу, но это только спектакль подправить – я нужен способ, который гарантированно не вызовет перегрузки памяти, не важно, сколько объекты, содержащиеся в файле.

Я могу выбрать, чтобы использовать FormatA или FormatB или может что-то другое, пожалуйста, укажите в вашем ответе. Спасибо!

Я решил эту проблему с помощью по splt нпм модуль. Труба вашего потока в сплит, и он будет “разбивать поток и собрать его так, чтобы каждая строка кусок“.

Пример кода:

var fs = require('fs')   , split = require('split')   ;  var stream = fs.createReadStream(filePath, {flags: 'r', encoding: 'utf-8'}); var lineStream = stream.pipe(split()); linestream.on('data', function(chunk) {     var json = JSON.parse(chunk);                // ... }); 
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Оставить комментарий

Ваш email нигде не будет показанОбязательные для заполнения поля помечены *

*