2016-05-15 17 views
1

gelöscht werden, wie ein bestimmtes JSON-Element durch Variable löschen:
d. H. Ich möchte obj.a.b löschen, aber es wird von einer Variablen übergeben.
Gibt es eine einfache Möglichkeit, dies zu implementieren?Wie verschachtelte JSON-Element durch Variable

var t = 'obj.a.b'; 
 
var obj = {a: {b: 'b', b2: 'b2'}}; 
 
delete t; // not work here 
 
console.log(JSON.stringify(obj));

Antwort

1

Wenn Sie den Wert von t vertrauen, können Sie die eval(...) Funktion verwenden, um dynamische Code wie folgt auszuführen:

var t = 'obj.a.b'; 
var obj = {a: {b: 'b', b2: 'b2'}}; 
eval("delete " + t + ";"); 
console.log(JSON.stringify(obj)); 

Beachten Sie, dass, wenn Sie nicht den Wert vertrauen kann t (z. B. ist es ein vom Benutzer angegebener Wert), kann ein Angreifer Code injizieren, indem er einen schädlichen Wert für t liefert. Sie müssen eval(...) vorsichtig verwenden, da es leicht zu einem solchen Code-Injection-Angriff führen kann. This answer hat eine gute Diskussion darüber, wie und wann eval zu verwenden ist.

Verwandte Themen