从JSON文件中删除JSON对象

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

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

我写的代码由于某种原因而不起作用。 我希望能够将一个variables“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)); 

你可以使用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)); 

你的用户没有被键入名字,他们是在一个数字索引数组。 你必须使用delete users.users[1] ,或者更好的办法是使用.splice()

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

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

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