从 JSON 文件中删除 JSON 对象

问题描述 投票:0回答:3

我正在尝试编写一个从 json 文件中删除对象的函数。 json 文件的格式是用户数组,如下所示:

{
  "users": [ 
    {
      "username": "test1",
      "answers": [
        "Red",
        "Blue",
        "Yellow",
        "Green"
      ]
    },
    {
      "username": "test2",
      "answers": [
        "1",
        "2",
        "3",
        "4"
      ]
    } 
  ]
}

我编写的代码由于某种原因无法工作。我希望能够将变量“test2”传递到函数中,然后从对象中删除该特定用户,包括他们的答案。

var removeUser = user;
var data = fs.readFileSync('results.json');
var json = JSON.parse(data);
var users = json.users;

delete users.users[user];

fs.writeFileSync('results.json', JSON.stringify(json, null, 2));
json node.js express fs
3个回答
8
投票

您可以使用

filter
删除您不想要的用户

var fs = require('fs');
var removeUser = "test2";
var data = fs.readFileSync('results.json');
var json = JSON.parse(data);
var users = json.users;
json.users = users.filter((user) => { return user.username !== removeUser });
fs.writeFileSync('results.json', JSON.stringify(json, null, 2));

1
投票

您的用户不会被名字锁定,他们位于数字索引数组中。 您必须使用

delete users.users[1]
,或者更好的是,使用
.splice()

如果你想根据用户名删除,你将不得不循环。

users.users.forEach((user, index) => {
  if (user.username === 'test2') {
    users.users.splice(index, 1);
  }
});

对于更复杂的情况,请考虑使用 TaffyDB 等客户端数据库。


0
投票

这是从待办事项或数据库中删除任务或数据的方法之一,作为一名学生,我将更多地支持这样的方法 在此输入代码

const loadTask = () => {
  try {
    const dataBuffer = fs.readFileSync(filePath);
    const dataJson = dataBuffer.toString();
    return JSON.parse(dataJson);
  } catch (error) {
    return [];
  }
};

const removeTask = (taskToRemove) => {
  let tasks = loadTask();
  const filteredTasks = tasks.filter((task) => task.task !== taskToRemove);

  if (tasks.length === filteredTasks.length) {
    console.log(`Task "${taskToRemove}" not found.`);
  } else {
    saveTasks(filteredTasks);
    console.log(`Task "${taskToRemove}" removed successfully!`);
  }
};
© www.soinside.com 2019 - 2024. All rights reserved.