Json-Element entfernen


111

Ich möchte das JSON-Element oder eine ganze Zeile aus JSON entfernen.

Ich habe folgende JSON-Zeichenfolge:

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

1
Ich denke, Sie haben immer noch einige JSON-Fehler
Santosh Linkha

3
Mögliches Duplikat von JSON-Attribut entfernen
ChrisF

1
Ich habe die Frage beantwortet, vielleicht möchten Sie sie sich ansehen. Ich habe die Antwort hinzugefügt, weil viele Leute nicht berücksichtigen, wie die Speicherbereinigung funktioniert.
Spiele Brainiac

@ChrisF - kein Duplikat, da Löschen ein "undefiniertes" Element im Array erstellt
mplungjan

Antworten:


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

Sie können Spleiß verwenden , um Elemente aus einem Array zu entfernen.


5
Warum sind immer die schlechtesten Antworten oben? Könnte es möglicherweise die Wiederholungspunkte sein? Ich suchte. Ich fand. Sie hatten die richtige Antwort.
Eric Leroy

1
Ich verstehe diese Antwort nicht. Wo ist "foo" in den Testdaten?
Tony

9
Wo ist foo in den Testdaten? Nun, die erste Zeile ist eigentlich Pseudocode. Anstelle von json = {...} wäre es so etwas wie json = {foo: 'value'}
aharris88

5
json [key] löschen; ? Wie viele "Vornamen" in einem Beispiel? Falsche Antwort.
EGurelli

3
mit Lösch wird ein Null - Element in dem Feld verlassen
MikeL

21

Das JSON enthält KEINE nachgestellten Kommas

UPDATE : Sie müssen array.splice verwenden und nicht löschen, wenn Sie Elemente aus dem Array im Objekt entfernen möchten

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.


15

Sie können versuchen, den JSON wie folgt zu löschen:

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

alert(bleh.first);

delete bleh.first;

alert(bleh.first);

Alternativ können Sie auch den Index übergeben, um ein Attribut zu löschen:

delete bleh[1];

Um jedoch einige der Auswirkungen der Verwendung von Löschvorgängen zu verstehen, schauen Sie hier


6
  1. Beheben Sie die Fehler im JSON: http://jsonlint.com/
  2. Analysieren Sie den JSON (da Sie die Frage mit JavaScript markiert haben, verwenden Sie json2.js )
  3. Löschen Sie die Eigenschaft aus dem von Ihnen erstellten Objekt
  4. Stringifizieren Sie das Objekt zurück zu JSON.

Drat - Sie antworteten, während ich Kommas entfernte :(
mplungjan

6

Wie von @mplungjan beschrieben, fand ich es richtig. Dann klicke ich sofort auf die Schaltfläche "Rate erhöhen". Aber als ich es befolgte, bekam ich endlich einen Fehler.

<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>

Löschen ist nur das Entfernen der Daten, aber der 'Ort' ist immer noch als undefiniert vorhanden .

Ich habe das gemacht und es funktioniert wie ein Zauber:

data.result.splice(2,1);  

Bedeutung: 1 Element an Position 3 löschen (da das Array von 0 gezählt wird, wird das Element an Nr. 3 als Nr. 2 gezählt)


6

Ich empfehle eine spliceMethode zum Entfernen eines Objekts aus dem JSON-Objektarray.

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.
        }
});

Ich benutze dies, weil ich, wenn ich die deleteMethode benutze , ein nullObjekt bekomme , nachdem ich es getan habeJSON.stringify(json)


1
Spleißen sollte die akzeptierte Antwort sein, Löschen ersetzt das JSON-Dokument durch eine NULL-Einfügung .... Ich wollte Löschen, um es zu löschen - Spleißen wird.
Andy

5

Versuchen Sie Folgendes

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

5

Alle Antworten sind großartig, und es wird auch das tun, was Sie verlangen, aber ich glaube, der beste Weg, dies zu löschen, und der beste Weg für den Garbage Collector (wenn Sie node.js ausführen) ist folgender:

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

Auf diese Weise erkennt der Garbage Collector für node.js, dass dies json['somekey']nicht mehr erforderlich ist, und löscht es.


Ich habe auch darüber gelesen, aber ich kann das nicht zum Laufen bringen. Es
bleiben

0

Versuche dies

json = $.grep(newcurrPayment.paymentTypeInsert, function (el, idx) { return el.FirstName == "Test1" }, true)

0

Wenn wir ein Attribut entfernen möchten, sagen wir "firstName" aus dem Array, können wir die Map-Funktion zusammen mit delete wie oben erwähnt verwenden

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

result.map( el=>{
    delete el["FirstName"]
})
console.log("OUT",result)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.