Итак, у меня есть этот объект json, где структура является переменной в зависимости от того, как вы извлекаете данные. Допустим, объект выглядит в одном случае:Правильное использование eval в javascript?
{
"status": "success",
"data": {
"users": [...]
}
}
, но выглядит, как это в другом случае:
{
"status": "success",
"data": {
"posts": [...]
}
}
Теперь для первого примера, они, как я динамически получать данные, как это :
var dataLocation = 'data.users';
var responseData;
eval('responseData = response.' +dataLocation + ';');
Это позволяет мне настроить его. Просто обратите внимание, что это простой пример: в реальном коде есть только одна функция для анализа данных, и я бы передал dataLocation в качестве параметра.
Теперь мой первый вопрос заключается в том, есть ли лучшее желание достичь той же цели, не используя eval?
Если нет, то второй вопрос заключается в том, что мне нужно сделать для оператора eval, чтобы убедиться, что он безопасен (dataLocation никогда не должен передаваться от пользователя, он всегда будет из кода, но все же).
UPDATE
Основываясь на комментарий от Берги, сейчас я использую это:
var parts = dataListLocation.split('.');
for(var x = 0; x < parts.length; x += 1) {
responseData = responseData[parts[x]];
}
точной копия [является его злым использовать Eval для преобразования строки функция?] (http://stackoverflow.com/questions/14396647/is-it-evil-to-use-eval-to-convert-a-string-to-a-function) – Bergi
См. [тысячи способов сделать это лучше] (http://stackoverflow.com/a/14397052/1048572) – Bergi