从JSON文件中删除JSON对象
问题描述:
我正在尝试编写一个从json文件中删除对象的函数。 json文件格式化为一组用户,例如:从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));
答
您可以使用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这样的客户端数据库。