【发布时间】:2021-04-25 14:18:51
【问题描述】:
我想用JS在JSON中创建多个对象,即使信息相同而不是替换旧对象。
这是我正在使用的代码。
student.js:
'use strict';
const fs = require('fs');
let student = {
name: 'Mike',
age: 25,
gender: 'Male',
department: 'English',
car: 'Honda'
};
let data = JSON.stringify(student);
fs.writeFileSync('file.json', data, finished());
function finished(err) {
console.log('success');
}
file.json(student.js 的结果):
{
"name": "Mike",
"age": 25,
"gender": "Male",
"department": "English",
"car": "Honda"
}
但是当我用相同的值再次运行代码时,什么都没有发生,file.json 保持不变,就好像我只运行了一次一样。
例如,如果我运行 student.js 三次(不更改其中的任何值),我该如何实现这样的目标?
{
"name": "Mike",
"age": 25,
"gender": "Male",
"department": "English",
"car": "Honda"
} {
"name": "Mike",
"age": 25,
"gender": "Male",
"department": "English",
"car": "Honda"
} {
"name": "Mike",
"age": 25,
"gender": "Male",
"department": "English",
"car": "Honda"
}
谢谢。
【问题讨论】:
-
您不能向对象添加相同的键。如果要重复一个值,请在 JSON 中使用数组
-
为什么要在 json 中重复对象?
-
writeFileSync 正在替换已经存在的文件
-
是的,
fs.appendFile将追加数据。fs.writeFileSync不会。附带说明一下,您的代码现在正在做什么:调用finished(),获取undefined,将undefined作为fs.writeFileSync的第三个参数传递(所以不是很有用)。特别是当第三个参数应该是一个选项对象时。Sync表示在这种情况下该函数不接受任何回调。它是同步的
标签: javascript node.js json fs