使用缓冲区和流写入数据

Using buffers and streams to write the data

我需要一个 node.js 程序用于以下 我有一个巨大的 JSON 数据,其中有数千条记录,我需要使用流将其复制到另一个文件。但是有 3 个键值对,但我只需要复制一个键值(即)我有 nameagecity,但我只需要在另一个文件中的名称json 记录 .

如果有任何替代方案,你能建议我吗?另外文件太大,包含数千条记录。

样本数据取为

[  
   {  
      "name":"John",
      "age":31,
      "city":"New York"
   },
   {  
      "name":"vamsi",
      "age":31,
      "city":"New York"
   },
   {  
      "name":"loga",
      "age":31,
      "city":"New York"
   },
   {  
      "name":"krishna",
      "age":31,
      "city":"New York"
   },
   {  
      "name":"kishore",
      "age":31,
      "city":"New York"
   },
   {  
      "name":"reddy",
      "age":31,
      "city":"New York"
   }
]

使用流应该很容易:

首先安装一些模块用于流式传输JSON和转换

npm install --save JSONStream scramjet

然后写代码:

const scramjet = require("scramjet");
const fs = require("fs");
const JSONStream = require("JSONStream")

fs.createReadStream(filename)             // open the file
    .pipe(JSONStream.parse('*'))          // parse JSON array to object stream
    .pipe(new scramjet.DataStream)        // pipe for transformation
    .map(({name}) => name)                 // extract "name" field from each object
    .toJSONArray()                        // create an array stream
    .pipe(fs.createWriteStream(outname)); // write to output.

有关详细信息,请参阅文档: