我有一个像下面这样的对象数组,我必须使用节点js写入文件,目的是每行将一个项目写入一个文件:
Bundle
预期输出文件内容:
cont obj = [{a:1},{b:2}]
我的代码未成功
//file.json
{a:1}
{b:2}
如果有人可以帮助我, 谢谢。
答案 0 :(得分:1)
您可以简单地:
const text = arr.map(JSON.stringify).reduce((prev, next) => `${prev}\n${next}`);
fs.writeFileSync(filePath, text, 'utf-8');
(这是@ronapelbaum方法的略微修改)
答案 1 :(得分:0)
您可以使用util.inspect
并循环播放。
const arr = [{a:1}, {b:2}];
const filePath = "path/to/json";
for (let obj of arr)
fs.appendFileSync (filePath, util.inspect (obj) + "\n")
或者,如果您想累积数据以节省写入操作:
const arr = [{a:1}, {b:2}];
const data = arr.reduce ((a, b) => a + util.inspect (b) + "\n", "");
const filePath = "path/to/json";
fs.writeFileSync (filePath, data);
最终文件符合您的要求:
{ a: 1 }
{ b: 2 }
答案 2 :(得分:-1)
使用jsonfile
library时,不需要使用JSON.stringify(obj)
。
在您的情况下,您真的不想编写有效的json ...
考虑这一点:
const text = arr.reduce((txt, cur) => txt + '\n' + JSON.stringify(cur), '');
fs.writeFileSync(filePath, text, 'utf-8');