2016-05-15 61 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有很好的讨论。