所以我有这个json对象,其结构是可变的,这取决于你如何检索数据。可以说物体看起来像这样的一个案例:在javascript中正确使用eval?
{
"status": "success",
"data": {
"users": [...]
}
}
但在另一种情况是这样的:
{
"status": "success",
"data": {
"posts": [...]
}
}
现在的第一个例子,他们的方式我动态获取的数据是这样的:
var dataLocation = 'data.users';
var responseData;
eval('responseData = response.' +dataLocation + ';');
这让我来配置它。请注意,这仅仅是一个简单的例子,在真正的代码中,只有一个函数来解析数据,并且我将传入dataLocation作为参数。
现在我的第一个问题是,如果不使用eval,是否有更好的想要达到同样的目标?
如果没有,第二个问题是我需要怎样做eval语句以确保它是安全的(dataLocation不应该从用户传入,它总是来自代码但仍然)。
UPDATE
基于从BERGI的评论,我现在使用的是这样的:
var parts = dataListLocation.split('.');
for(var x = 0; x < parts.length; x += 1) {
responseData = responseData[parts[x]];
}
精确复制一个函数?](http://stackoverflow.com/questions/14396647/is-it-evil-to-use-eval-to-convert-a-string-to-a-function) – Bergi 2013-04-23 14:23:16
请参阅[千方法做这更好](http://stackoverflow.com/a/14397052/1048572) – Bergi 2013-04-23 14:24:24