需要从Node.js将对象数组写入文件

时间:2018-07-12 14:14:23

标签: node.js

我有一个像下面这样的对象数组,我必须使用节点js写入文件,目的是每行将一个项目写入一个文件:

Bundle

预期输出文件内容:

cont obj = [{a:1},{b:2}]

我的代码未成功

//file.json
{a:1}
{b:2}

如果有人可以帮助我, 谢谢。

3 个答案:

答案 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');