从 JSON 文件中删除 JSON 对象

Posted

技术标签:

【中文标题】从 JSON 文件中删除 JSON 对象【英文标题】:Removing JSON object from JSON file 【发布时间】:2017-03-25 02:15:57 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

对于更复杂的事情,可以考虑使用 TaffyDB 之类的客户端数据库。

【讨论】:

以上是关于从 JSON 文件中删除 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 从 JSON 文件中删除前两个 JSON 对象

从 json 文件中删除子属性

sed 从 json 字符串中删除 json 子对象

php - 从json对象中按值删除[关闭]

如何使用 Spring Boot 和 MongoDB 从 JSON 列表中删除对象

从python中的json文件中删除行