У меня есть большой объект javascript, который я хочу преобразовать в JSON и записать в файл. Я думал, что я мог бы сделать это, используя потоки, как такКак использовать потоки в JSON, строят большие вложенные объекты в Node.js?
var fs = require('fs');
var JSONStream = require('JSONStream');
var st = JSONStream.stringifyObject()
.pipe(fs.createWriteStream('./output_file.js'))
st.write(large_object);
Когда я пытаюсь это я получаю сообщение об ошибке:
stream.js:94
throw er; // Unhandled stream error in pipe.
^
TypeError: Invalid non-string/buffer chunk
at validChunk (_stream_writable.js:153:14)
at WriteStream.Writable.write (_stream_writable.js:182:12)
Таким образом, очевидно, я не могу просто написать объект в этом stringifyObject
. Я не уверен, что следующий шаг. Мне нужно преобразовать объект в буфер? Запустите объект через некоторый конверсионный поток и проведите его до strinigfyObject
Ваше первое предложение приводит к 'Фатальная ошибка: JS распределения не удалось - процесс из memory' – kevzettler
Я только что изменил второй чтобы быть точным кодом для вашей ситуации, если большой массив. Попробуй это. –
Я попробовал вторую версию, однако у меня есть большой вложенный объект как один из значений 'obj [key]', который вызывает то, что бросает ошибку выделения памяти. Мне нужно что-то similliar, которое является рекурсивным для дочерних объектов. – kevzettler