¿Cómo analizar un archivo JSON delimitado por la Nueva línea por el módulo JSONStream en node.js?
jsonlines (2)
JSONstream está destinado a analizar un solo objeto JSON enorme, no muchos objetos JSON. Desea dividir el flujo en nuevas líneas, luego analizarlas como JSON.
El paquete NPM split reclamos para hacer esta división, e incluso tiene una función para analizar las líneas JSON por usted.
Tengo un archivo json grande, es un JSON delimitado por nueva línea, donde varios objetos JSON estándar están delimitados por nuevas líneas adicionales, por ejemplo
{''name'':''1'',''age'':5}
{''name'':''2'',''age'':3}
{''name'':''3'',''age'':6}
Ahora estoy usando JSONStream en node.js para analizar un archivo json grande, la razón por la que uso JSONStream es porque se basa en la transmisión.
Sin embargo, ambas sintaxis de análisis en el ejemplo no pueden ayudarme a analizar este archivo json con JSON separado en cada línea
var parser = JSONStream.parse(**[''rows'', true]**);
var parser = JSONStream.parse([**/./**]);
Puede alguien ayudarme con eso
Advertencia : desde que se escribió esta respuesta, el autor de la biblioteca JSONStream eliminó la funcionalidad del evento raíz de emisión , aparentemente para corregir una pérdida de memoria. Los futuros usuarios de esta biblioteca, puede utilizar las versiones 0.xx si necesita la funcionalidad de raíz de emisión.
A continuación se muestra la respuesta original sin modificar :
Desde el readme :
JSONStream.parse (ruta)
path
debe ser una matriz de nombres de propiedades, RegExps, booleanos y / o funciones. Cualquier objeto que coincida con la ruta se emitirá como''data''
.Se emite un evento
''root''
cuando se han recibido todos los datos. El evento''root''
pasa el objeto raíz y el recuento de objetos coincidentes.
En su caso, ya que desea recuperar los objetos JSON en lugar de propiedades específicas, utilizará el evento ''root''
y no necesita especificar una ruta.
Su código podría verse algo como esto:
var fs = require(''fs''),
JSONStream = require(''JSONStream'');
var stream = fs.createReadStream(''data.json'', {encoding: ''utf8''}),
parser = JSONStream.parse();
stream.pipe(parser);
parser.on(''root'', function (obj) {
console.log(obj); // whatever you will do with each JSON object
});