一尘不染

JavaScript eval()的替代品,用于解析JSON

json

快速提问。JavaScript中的Eval是不安全的吗?我有一个JSON对象作为字符串,我需要将其转换为实际对象,以便获取数据:

function PopulateSeriesFields(result) 
{
    data = eval('(' + result + ')');
    var myFakeExample = data.exampleType
}

如果有帮助,我正在使用jQuery的$ .ajax方法。

谢谢


阅读 280

收藏
2020-07-27

共1个答案

一尘不染

好吧,不管是否安全,当您使用jQuery时,最好使用$
.getJSON()
方法,而不是$ .ajax():

$.getJSON(url, function(data){
    alert(data.exampleType);
});

eval()
当您仅与自己的服务器通信时,通常被认为是安全的JSON解析,尤其是当您在服务器端使用良好的JSON库以保证生成的JSON不会包含任何讨厌的东西时。

甚至JSON的作者Douglas
Crockford都说eval(),除了解析JSON外,您不应在代码中的任何地方使用。参见他的书《JavaScript:优秀的部分》中的相应部分

2020-07-27