如何分析一个大的,新行分隔的JSON通过JSONStream模块中Node.js的文件?(how t

2019-07-20 16:24发布

我有一个大的JSON文件,它是新行分隔的JSON,多个标准JSON对象通过额外的新行,如分隔

{'name':'1','age':5}
{'name':'2','age':3}
{'name':'3','age':6}

我现在用JSONStream在node.js中解析一个大JSON文件,我用JSONStream是因为它是基于流的原因。

然而,在这两个例子解析语法不能帮我解析与分离JSON此JSON文件中的每一行

var parser = JSONStream.parse(**['rows', true]**);
var parser = JSONStream.parse([**/./**]);

有人可以帮助我与

Answer 1:

警告 :由于这个答案写好后,JSONStream库的作者删除EMIT根事件的功能 ,显然是为了解决内存泄漏。 这个库的未来用户,你可以,如果你需要的EMIT根功能使用0.XX版本。

以下是未经修改的原始答案

从自述 :

JSONStream.parse(路径)

path应该是属性名称,正则表达式,布尔值,和/或功能的阵列。 该路径匹配的任何对象会被发射为'data'

'root'当所有数据已被接收被发射的事件。 的'root'事件传递根对象&匹配的对象的计数。

在你的情况,因为你想拿回JSON对象,而不是特定的属性,您将使用'root'事件,你不需要指定的路径。

您的代码可能是这个样子:

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
});


Answer 2:

JSONstream是用于解析一个巨大的JSON对象,而不是许多JSON对象。 你要流于换行分割,然后分析它们的JSON。

故宫包拆分声称这样做分裂,甚至有一个功能解析JSON线为您服务。



文章来源: how to parse a large, Newline-delimited JSON file by JSONStream module in node.js?