从JSON文件中删除JSON对象

时间:2016-11-10 22:16:39

标签: json node.js express fs

我正在尝试编写一个从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));

2 个答案:

答案 0 :(得分:3)

您可以使用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 :(得分:1)

您的用户没有键入名称,他们使用的是数字索引数组。您必须使用delete users.users[1],或者更好的是,使用.splice()

如果您想根据用户名进行删除,则必须循环播放。

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

对于任何更复杂的事情,请考虑像TaffyDB这样的客户端数据库。