2011-03-15 37 views
53

Quiero eliminar el elemento JSON o una fila completa de JSON.Eliminar el elemento json

He siguiente cadena JSON:

{ 
    "result":[ 
     { 
      "FirstName": "Test1", 
      "LastName": "User", 
     }, 
     { 
      "FirstName": "user", 
      "LastName": "user", 
     }, 
     { 
      "FirstName": "Ropbert", 
      "LastName": "Jones", 
     }, 
     { 
      "FirstName": "hitesh", 
      "LastName": "prajapti", 
     } 
    ] 
} 
+1

creo que todavía tiene algunos errores JSON –

+3

posible duplicado de [Quitar un atributo JSON] (http://stackoverflow.com/questions/1219630/remove-a-json-attribute) – ChrisF

+1

Respondí la pregunta, es posible que desee echarle un vistazo. Agregué la respuesta porque muchas personas no toman en cuenta cómo funciona la recolección de basura. –

Respuesta

94
var json = { ... }; 
var key = "foo"; 
delete json[key]; // Removes json.foo from the dictionary. 

Puede usar splice para eliminar elementos de una matriz.

+0

¿Por qué siempre son las peores respuestas en la parte superior? ¿Es posible que sean los puntos de representación? Busqué. Encontré. Tuviste la respuesta correcta –

+0

No entiendo esta respuesta. ¿Dónde está "foo" en los datos de prueba? – Tony

+4

¿Dónde está foo en los datos de prueba? Bueno, la primera línea es realmente pseudocódigo. En lugar de json = {...}, sería algo como json = {foo: 'value'} – aharris88

6
  1. corregir los errores en el JSON: http://jsonlint.com/
  2. analizar el JSON (ya que se ha etiquetado a la pregunta con JavaScript, utilice json2.js)
  3. Delete la propiedad del objeto que creó
  4. Stringify el objeto a JSON.
+0

Drat - respondiste mientras quitaba las comas :( – mplungjan

13

no tienen detrás comas en su JSON

ACTUALIZACIÓN: es necesario utilizar array.splice y no eliminar si desea eliminar elementos de la matriz en el objeto

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.

+0

nice ELIMINAR es trabajo ... ¡gracias! – KingRider

5

Todas las respuestas son geniales, y harán lo que usted pregunte también, pero creo que la mejor manera de eliminar esto, y la mejor manera para el recolector de basura (si está ejecutando node.js) es como esto :

var json = { <your_imported_json_here> }; 
var key = "somekey"; 
json[key] = null; 
delete json[key]; 

de esta manera el recolector de basura para node.jsjson['somekey'] sabrá que ya no es necesaria, y lo eliminará.

+0

He leído acerca de hacerlo de esta manera también, pero no puedo hacer que esto funcione. Todavía deja las referencias nulas – K20GH

4

Prueba este siguiente

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

Usted puede tratar de eliminar el JSON de la siguiente manera:

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

alert(bleh.first); 

delete bleh.first; 

alert(bleh.first); 

Alternativamente, también puede pasar en el índice para eliminar un atributo:

delete bleh[1]; 

Sin embargo, para comprender algunas de las repercusiones del uso de eliminaciones, eche un vistazo here

3

Según lo descrito por @mplungjan, pensé que era correcto. Luego, de inmediato, hago clic en el botón de la tasa de subida. Pero al seguirlo, finalmente obtuve un error.

<script> 
var data = {"result":[ 
    {"FirstName":"Test1","LastName":"User","Email":"[email protected]","City":"ahmedabad","State":"sk","Country":"canada","Status":"False","iUserID":"23"}, 
    {"FirstName":"user","LastName":"user","Email":"[email protected]","City":"ahmedabad","State":"Gujarat","Country":"India","Status":"True","iUserID":"41"}, 
    {"FirstName":"Ropbert","LastName":"Jones","Email":"[email protected]","City":"NewYork","State":"gfg","Country":"fgdfgdfg","Status":"True","iUserID":"48"}, 
    {"FirstName":"hitesh","LastName":"prajapti","Email":"[email protected]","City":"","State":"","Country":"","Status":"True","iUserID":"78"} 
    ] 
} 
alert(data.result) 
delete data.result[3] 
alert(data.result) 
</script> 

de supresión se acaba de quitar los datos, pero el 'lugar' sigue ahí como indefinido.

lo hice y funciona como un encanto:

data.result.splice(2,1); 

significado: suprimir 1 elemento en la posición 3 (porque matriz se contó forma 0, entonces artículo sin ningún 3 se cuenta como no 2)

0

Recomiendo el método splice para eliminar un objeto de la matriz de objetos 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. 
     } 
}); 

utilizo esto porque cuando uso delete método, consigo null objeto después de que hago JSON.stringify(json)

Cuestiones relacionadas