我有一个大的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([**/./**]);
有人可以帮助我与
警告 :由于这个答案写好后,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
});
JSONstream是用于解析一个巨大的JSON对象,而不是许多JSON对象。 你要流于换行分割,然后分析它们的JSON。
故宫包拆分声称这样做分裂,甚至有一个功能解析JSON线为您服务。
文章来源: how to parse a large, Newline-delimited JSON file by JSONStream module in node.js?