gpt4 book ai didi

javascript - 在javascript中正确使用eval?

转载 作者:行者123 更新时间:2023-11-30 18:04:23 26 4
gpt4 key购买 nike

所以我有这个 json 对象,其中的结构是可变的,具体取决于您检索数据的方式。假设对象在一种情况下看起来像这样:

{
"status": "success",
"data": {
"users": [...]
}
}

但在另一种情况下看起来像这样:

{
"status": "success",
"data": {
"posts": [...]
}
}

现在对于第一个例子,我动态获取数据的方式是这样的:

var dataLocation = 'data.users';
var responseData;
eval('responseData = response.' +dataLocation + ';');

这允许我配置它。请注意,这只是一个简单的示例,在实际代码中只有一个函数来解析数据,我将把 dataLocation 作为参数传入。

现在我的第一个问题是,是否有更好的方法想要在不使用 eval 的情况下实现相同的目标?

如果不是,第二个问题是我需要对 eval 语句做什么以确保它是安全的(dataLocation 不应该从用户传入,它总是来自代码但仍然如此)。

更新

根据 Bergi 的评论,我现在正在使用这个:

var parts = dataListLocation.split('.');

for(var x = 0; x < parts.length; x += 1) {
responseData = responseData[parts[x]];
}

最佳答案

您应该使用括号表示法而不是 eval:

var responseData = response['data']['users'];

注意:根据您的描述,您拥有的是一个 JavaScript 对象文字。 JSON 将是编码为字符串的同一对象(例如,使用 JSON.stringify)。没有“JSON 对象”这样的东西,您要么有一个 JavaScript 对象,要么有一个 JSON 字符串。

关于javascript - 在javascript中正确使用eval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16171678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com