如何通过变量删除嵌套的json元素

时间:2016-05-15 01:15:20

标签: json

如何通过变量删除特定的json元素:
即我想删除obj.a.b,但它是由变量传递的 有没有一种简单的方法来实现它?

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

1 个答案:

答案 0 :(得分: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进行了很好的讨论。