将逗号分隔的JSON转换为换行符分隔的节点

kis*_*nay 2 json fs node.js jq jsonlines

我有一个JSON文件,我正在读取节点,修改并将其保存为json文件.

我希望保存新的json作为换行分隔vs在数组中.

我遇到了https://github.com/CrowdProcess/newline-json,但没有完全理解流.如果我有以下流设置,我如何通过解析器和字符串管道它?

fileStream = fs.createReadStream('source.json')
writeStream = fs.createWriteStream('output.txt');

var Parser = require('newline-json').Parser;
var Stringifier = require('newline-json').Stringifier;

var parser = new Parser();
var stringifier = new Stringifier();
Run Code Online (Sandbox Code Playgroud)

但是运行以下命令只会输出一个空白文件.

fileStream.pipe(parser).pipe(stringifier).pipe(writeStream)
Run Code Online (Sandbox Code Playgroud)

我对溪流有什么看法?

Vis*_*hnu 7

对于任何正在寻找如何将 json 对象数组转换为 nd-json的解决方案的人。这是解决方案:

输入:

const arrObj = [{
  id: 1,
  name: 'joe'
}, {
  id: 2,
  name: 'ben'
}, {
  id: 3,
  name: 'jake'
}, {
  id: 4,
  name: 'marsh'
}];

// stringify the object and join with \n
const ndJson = arrObj.map(JSON.stringify).join('\n');

console.log(ndJson);
Run Code Online (Sandbox Code Playgroud)

输出:

{"id":1,"name":"joe"}
{"id":2,"name":"ben"}
{"id":3,"name":"jake"}
{"id":4,"name":"marsh"}
Run Code Online (Sandbox Code Playgroud)

实施例用例:当导入批量请求从一个JSON文件elasticsearch

快乐编码:)


pea*_*eak 6

将JSON数组转换为换行符分隔的JSON实体流的一种方法是使用带有-c选项的jq,例如

$ jq -c ".[]"
Run Code Online (Sandbox Code Playgroud)

输入:

[[1,2], 3, {"4":5}]
Run Code Online (Sandbox Code Playgroud)

输出:

[1,2]
3
{"4":5}
Run Code Online (Sandbox Code Playgroud)

请参阅https://stedolan.github.io/jq