使用eval在JavaScript中计算JSON

使用eval在JavaScript中计算JSON,javascript,json,Javascript,Json,我正在查看某人的代码,并看到以下内容 假设JSON只是一个普通的JSON文件,下面的操作是什么 var obj = eval("["+json+"]"); 我想我真的不明白[“+json+”]在做什么?这是否只是将JSON中的内容包装在“?JSON是javascript的一个子集。因此eval只需将json转换为js对象(除非json描述了一个对象,然后您需要将它包装在“(“”)”中)。将其包装在[]中会将对象放入数组中 但是,如果json源不是来自受信任的源,那么json也可能包含任意代码,

我正在查看某人的代码,并看到以下内容

假设JSON只是一个普通的JSON文件,下面的操作是什么

var obj = eval("["+json+"]");

我想我真的不明白
[“+json+”]
在做什么?这是否只是将JSON中的内容包装在

JSON是javascript的一个子集。因此eval只需将json转换为js对象(除非json描述了一个对象,然后您需要将它包装在“(“”)”中)。将其包装在[]中会将对象放入数组中

但是,如果json源不是来自受信任的源,那么json也可能包含任意代码,因此不应将eval用于此目的改用JSON.parse,它更安全,更易于使用

var json = JSON.stringify(object);
var array = eval("[" + json + "]"); //array contains one element which is a copy of object. Because json is valid javascript.

不要使用
eval
从字符串获取JSON,
JSON.parse()
更安全,更可取。很好,但是eval([JSON])和eval(“[”+JSON+“])”之间有什么区别??这就像是在问我的手放在沸水锅里有什么区别,而不是在沸水锅被移走后仅仅把手放在炉子上。eval([json])甚至不是有效的eval调用。eval将给定字符串计算为javascript代码。使用eval([json])传递的是数组,而不是未定义的字符串。