Javascript 不使用eval执行JSON字符串的选项

Javascript 不使用eval执行JSON字符串的选项,javascript,json,eval,Javascript,Json,Eval,我想知道在不使用eval()的情况下,执行一个在JSON中查找值的字符串需要哪些选项 我的JSON如下所示: var caso = { "_id": "C1M3bqsB92i5SPDu", "type": "bpm", "bpm": { "_data": { "_id_bpm": "bpm_solicitud_viaticos" }, "milestones": { "soli

我想知道在不使用eval()的情况下,执行一个在JSON中查找值的字符串需要哪些选项

我的JSON如下所示:

var caso = {
    "_id": "C1M3bqsB92i5SPDu",
    "type": "bpm",
    "bpm": {
        "_data": {
            "_id_bpm": "bpm_solicitud_viaticos"
        },
        "milestones": {
            "solicitud": {
                "toma_de_datos": {
                    "nombre": "RAUL MEDINA",
                    "clave": "123",
                    "departamento": "Finanzas",
                    "cantidad": "456"
                }
            }
        }
    }
}
现在,我将输入一个值为的字符串:

var step = "caso.bpm.milestones.solicitud.toma_de_datos.nombre";
我通过以下方式从JSON中获得我想要的值:

var thevalue = eval(step);
哪些是我的选项而不是eval()?既高效又易于实施


非常感谢你的帮助

如果字符串始终采用该格式,则可以拆分它并对其进行迭代

var pieces = step.split('.');
var parent = window;

while(parent && pieces.length) {
    parent = parent[pieces.shift()];
}

if(parent && pieces.length === 0) {
    // parent is now the value
}

这里有一把小提琴:

您可以使用:新函数;这仅仅是一个点分隔的字符串吗?请尝试使用get-from-path函数see或@Brad。如果您发布了一个解释差异的链接,您的评论实际上会很有帮助。据我们所知,OP完全理解这一区别,只是简单地展示了一个将JSON解析为他们正在使用的对象文本的示例。@Ian你说得对。。。这就是我添加评论的原因。要么Laerion知道我在说什么并解释,要么会指出混淆的地方,这样我就可以提供有针对性的解释;这也可能是不可能的:(我有理由期望OP能解决这个问题。帮助人们朝着正确的方向前进,而不是握着他们的手。
var pieces = step.split('.'),
    result;

pieces.shift(); //discards superfluous "caso"
result = caso[pieces.shift()];

while (pieces.length >= 1) {
    result = result[pieces.shift()];
}