如何使用 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从java传递到javascript函数

如何将 json 数据从 ruby​​ 控制器传递到 javascript (Rails 6.1)?

如何在没有 ASP.NET Core 的情况下将 Json 数据从控制器发送到 javascript?

QJsonObject如何创建函数