在JavaScript中使用eval对JSON求值

Using eval to evaluate JSON in JavaScript

本文关键字:JSON 求值 eval JavaScript      更新时间:2023-09-26

我在看别人的代码时看到了以下内容:

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

var obj = eval("["+json+"]");
我想我真的不明白["+json+"]在做什么?这只是在""中包装JSON吗?

Json是javascript的一个子集。所以eval只会将json转换为js-object(除非json描述的是一个对象,那么你需要将其包装在'(' ')'中)。在[]中包装它将把对象放在一个数组中。

但是,如果json源不是来自可信源,json也可能包含任意代码,因此eval不应该用于此目的。使用JSON。相反,使用

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