所以我有一个巨大 JSON外部文件,我想在我的nodejs项目中读取该文件,并从中保存特定 key 的 value 将该JSON文件转换为另一个外部JSON文件,其中 value 本身是一个 HUGE 数组。
输入JSON的一般结构:
{
key1: val1,
key2: val2,
key3: [val3_1, val3_2, ...],
key4: {
key4_1: val4_1,
key4_2: [val4_2_1, val4_2_2, ...]
}
...
}
我不确定是否逐行阅读,因为我几乎在所有地方都阅读过以阅读HUGE JSON,这是我想以某种方式执行搜索操作时继续进行的一种方式。
答案 0 :(得分:0)
因此,感谢@ T.J.Crowder,我设法找到了我正在进行的错误方法调用。现在有一个工作代码:
const StreamObject = require('stream-json/streamers/StreamObject');
const fs = require('fs');
const _ = require('underscore');
const jsonStream = StreamObject.withParser();
var inputfile = "~Path/5cd792a633e32a6e5e20e56a.geojson";
var outputfile = "~Path/5cd792a633e32a6e5e20e56a.json";
var outstream = fs.createWriteStream(outputfile);
outstream.writable = true;
jsonStream.on('data', ({key, value}) => {
if (_.difference(['features'], Object.keys(value)).length === 0 ){
outstream.write(JSON.stringify(Object.values(value['features'])));
}
});
jsonStream.on('end', () => console.log('Done Export!'));
fs.createReadStream(inputfile).pipe(jsonStream.input);
基本上,我所做的就是读取存储在本地的geojson file并将 data ['data'] ['features'] 数组导出到另一个外部json文件。这只是一个示例,geojson和导出的array / json可能会变得很大。
现在,尽管我设法通过合并不同的stackoverflow帖子来实现它,但是不确定它是否应该做正确的工作,并且整个数组不会立即存储在RAM中。特别是,if
语句用于写入输出的方式。如有必要,请更正代码。
谢谢!