2016-05-15 63 views
1

如何通過變量刪除特定的json元素:
即我想刪除obj.a.b,但它是通過變量傳遞的。
有沒有簡單的方法來實現這個?如何通過變量刪除嵌套的json元素

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

回答

1

如果您信任的t值,你可以使用eval(...)函數來執行這樣的動態代碼:

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

請注意,如果你不能信任的價值t(例如,它是用戶提供的值),攻擊者可以通過爲t提供惡意值來注入代碼。您必須小心使用eval(...),因爲它很容易導致此類代碼注入攻擊。 This answer關於如何以及何時使用eval有很好的討論。