删除json元素

Hit*_*ati 95 javascript json

我想从JSON中删除JSON元素或一整行.

我有以下JSON字符串:

{
   "result":[
       {
           "FirstName": "Test1",
           "LastName":  "User",
       },
       {
           "FirstName": "user",
           "LastName":  "user",
       },
       {
           "FirstName": "Ropbert",
           "LastName":  "Jones",
       },
       {
           "FirstName": "hitesh",
           "LastName":  "prajapti",
       }
   ]
}
Run Code Online (Sandbox Code Playgroud)

dte*_*eoh 164

var json = { ... };
var key = "foo";
delete json[key]; // Removes json.foo from the dictionary.
Run Code Online (Sandbox Code Playgroud)

您可以使用splice从数组中删除元素.

  • 测试数据中的foo在哪里?好吧,第一行实际上是伪代码.而不是json = {...},它将类似于json = {foo:'value'} (9认同)
  • 为什么总是最差的答案排在最前面?可能是代表点吗?我搜索了。我发现。您的回答正确。 (4认同)
  • 删除json [key]; ?给出的例子中有多少"FirstName"?错误的答案. (4认同)
  • 我没有得到这个答案。测试数据中的“foo”在哪里? (3认同)
  • 使用* delete *将在数组中保留一个空元素 (2认同)

mpl*_*jan 20

您的JSON中没有逗号逗号

更新:如果要从对象中的数组中删除项目,则需要使用array.splice而不是删除

var data = {
  "result": [{
    "FirstName": "Test1",
    "LastName": "User"
  }, {
    "FirstName": "user",
    "LastName": "user"
  }]
}
console.log(data.result);
console.log("------------ deleting -------------");
delete data.result[1];
console.log(data.result); // note the "undefined" in the array.


data = {
  "result": [{
    "FirstName": "Test1",
    "LastName": "User"
  }, {
    "FirstName": "user",
    "LastName": "user"
  }]
}

console.log(data.result);
console.log("------------ slicing -------------");
var deletedItem = data.result.splice(1,1);
console.log(data.result); // here no problem with undefined.
Run Code Online (Sandbox Code Playgroud)


Far*_*rax 12

您可以尝试删除JSON,如下所示:

var bleh = {first: '1', second: '2', third:'3'}

alert(bleh.first);

delete bleh.first;

alert(bleh.first);
Run Code Online (Sandbox Code Playgroud)

或者,您也可以传入索引以删除属性:

delete bleh[1];
Run Code Online (Sandbox Code Playgroud)

但是,要了解使用删除操作的一些后果,请查看此处


Sah*_*han 11

我推荐splice从 JSON 对象数组中删除对象的方法。

jQuery(json).each(function (index){
        if(json[index].FirstName == "Test1"){
            json.splice(index,1); // This will remove the object that first name equals to Test1
            return false; // This will stop the execution of jQuery each loop.
        }
});
Run Code Online (Sandbox Code Playgroud)

我使用这个是因为当我使用delete方法时,我会null在我做之后得到对象JSON.stringify(json)


Chr*_*ris 8

对于那些来到这里寻找如何根据对象值从 JSON 数组中删除对象的人:

let users = [{"name": "Ben"},{"name": "Tim"},{"name": "Harry"}];

 for (let [i, user] of users.entries()) {
    if (user.name == "Tim") {
        users.splice(i, 1);
    }
 }
Run Code Online (Sandbox Code Playgroud)

用户Tim现在从 JSON 数组users 中删除。


Que*_*tin 6

  1. 修复JSON中的错误:http://jsonlint.com/
  2. 解析JSON(因为你用JavaScript标记了问题,使用json2.js)
  3. 从您创建的对象中删除该属性
  4. 将对象字符串化回JSON.


Sul*_*oho 6

正如@mplungjan 所描述的,我认为这是对的。然后我马上点击了加价按钮。但是通过遵循它,我终于得到了一个错误。

<script>
var data = {"result":[
  {"FirstName":"Test1","LastName":"User","Email":"test@test.com","City":"ahmedabad","State":"sk","Country":"canada","Status":"False","iUserID":"23"},
  {"FirstName":"user","LastName":"user","Email":"u@u.com","City":"ahmedabad","State":"Gujarat","Country":"India","Status":"True","iUserID":"41"},
  {"FirstName":"Ropbert","LastName":"Jones","Email":"Robert@gmail.com","City":"NewYork","State":"gfg","Country":"fgdfgdfg","Status":"True","iUserID":"48"},
  {"FirstName":"hitesh","LastName":"prajapti","Email":"h.prajapati@zzz.com","City":"","State":"","Country":"","Status":"True","iUserID":"78"}
  ]
}
alert(data.result)
delete data.result[3]
alert(data.result)
</script>
Run Code Online (Sandbox Code Playgroud)

Delete 只是删除数据,但 'place' 仍然作为undefined 存在

我这样做了,它就像一个魅力:

data.result.splice(2,1);  
Run Code Online (Sandbox Code Playgroud)

含义:删除位置 3 处的 1 个项目(因为数组从 0 开始计数,那么第 3 个项目被视为没有 2)


Gam*_*iac 5

所有的答案都很棒,它也会按照你的要求做,但我相信删除它的最佳方法,以及垃圾收集器的最佳方法(如果你运行node.js)是这样的:

var json = { <your_imported_json_here> };
var key = "somekey";
json[key] = null;
delete json[key];
Run Code Online (Sandbox Code Playgroud)

这样垃圾收集器node.js将知道json['somekey']不再需要,并将删除它.


abc*_*bcd 5

试试这个

var myJSONObject ={"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
console.log(myJSONObject);
console.log(myJSONObject.ircEvent);
delete myJSONObject.ircEvent 
delete myJSONObject.regex 
console.log(myJSONObject);
Run Code Online (Sandbox Code Playgroud)