我正在查看某人的代码并看到以下内容。
假设JSON只是一个普通的JSON文件,下面会做什么?
var obj = eval("["+json+"]");
我想我真的不明白["+json+"]
在做什么?这只是在""
中包装JSON中的内容吗?
答案 0 :(得分:1)
Json是javascript的一个子集。因此,eval会将json转换为js对象(除非json描述一个对象,然后你need将它包装在'('')' )。将它包装在[]中会将对象放入数组中。
但是,如果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.