如何使用 Javascript 在 JSON 中创建多个对象? [复制]
Posted
技术标签:
【中文标题】如何使用 Javascript 在 JSON 中创建多个对象? [复制]【英文标题】:How can I create multiple objects in JSON with Javascript? [duplicate] 【发布时间】: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
表示在这种情况下该函数不接受任何回调。它是同步的
【参考方案1】:
fs.writeFileSync()
like fs.writeFile()
将在文件已经存在时替换它。所以当你再次调用该函数时,它会看到这个文件存在并正在替换它。
你要找的是fs.appendFileSync()
const fs = require('fs');
fs.appendFileSync('message.txt', 'data to append');
注意
Node.js 开发人员更喜欢异步方法而不是同步方法 作为异步方法的方法从不会在程序运行期间阻塞程序 执行,而后者执行。阻塞主线程是 Node.js 中的弊端,因此只能使用同步函数 用于调试或没有其他选项可用时。
我建议看看异步函数appendFile()
fs.appendFile('message.txt', 'data to append', (err) =>
if (err) throw err;
console.log('The "data to append" was appended to file!');
);
【讨论】:
以上是关于如何使用 Javascript 在 JSON 中创建多个对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
javascript 在Vue.js中创建Axios / Json服务
如何将 json 编码的 PHP 数组转换为 Javascript 中的数组? [复制]
如何将 json 数据从 ruby 控制器传递到 javascript (Rails 6.1)?