2009-08-02 7 views
224

jeśli mam obiektu JSON powiedzieć:Usuń atrybut JSON

var myObj = {'test' : {'key1' : 'value', 'key2': 'value'}} 

mogę usunąć 'klucz1' więc staje się:

{'test' : {'key2': 'value'}} 
+5

Po prostu pedantyczny, to obiekt JavaScript, a nie "obiekt JSON" JSON to ciąg znaków reprezentujący obiekt JavaScript. – Davy8

Odpowiedz

382

prosty:

delete myObj.test.key1; 
+16

delete myObj.test ['klucz1']; też by działało. – MyItchyChin

+26

Tak samo jak "delete myObj ['test'] ['key1']'; możesz zamienić 'whatever.x' i' cokolwiek ['x'] 'o ile' x' jest poprawną nazwą zmiennej, więc nawet 'delete myObj ['test']. key1' zadziała. –

+1

https://fiddle.jshell.net/jr0enbua/ Oto przykład użycia delete –

82

wybranego odpowiedź działałaby tak długo, jak długo znasz sam klucz, który chcesz usunąć, ale jeśli powinien być naprawdę dynamiczny, musisz użyć notacji [] zamiast notacja kropkowa.

Na przykład:

var keyToDelete = "key1"; 
var myObj = {"test": {"key1": "value", "key2": "value"}} 

//that will not work. 
delete myObj.test.keyToDelete 

zamiast tego trzeba użyć:

delete myObj.test[keyToDelete]; 

zastąpić notacji kropki [] notacji dla tych wartości, które mają być oceniane przed usunięciem.

+0

Podoba mi się opcja dynamizmu. pomógł w moim własnym przypadku usunąć obiekt dynamicznie z obiektu json – user1862764

+0

Sprawdzając powyższe rozwiązanie, już zastanawiam się, jakie jest rozwiązanie, jeśli jest to zmienna, dzięki za zaoszczędzenie mojego czasu na sztuczkę – zhihong

+0

Hej @praneetloke Mam jeden zapytanie otrzymuję tablicę JSON Ex: [{\ "Countrycode \": \ "DE \", \ "count \": \ "3 \"}], ale chcę uzyskać jak [{"DE": "3"} ] tak, ale nie mam tego wyjścia Proszę pomóż mi –