JSON.parse() 和 eval() 方法都可以用于将字符串转换为 JavaScript 对象,但它们之间有一些重要的区别。
JSON.parse():
- 仅接受符合 JSON 格式的字符串,不接受其他 JavaScript 代码。
- 更安全,不会执行任何 JavaScript 代码,只会解析 JSON 格式的数据。
- 通常用于解析从服务器获取的 JSON 数据。
var jsonString = '{"name": "Alice", "age": 25}'; var jsonObj = JSON.parse(jsonString); console.log(jsonObj.name); // 输出: Alice console.log(jsonObj.age); // 输出: 25
eval():
- 可以执行任何 JavaScript 代码,包括 JSON 数据、函数等。
- 不安全,可能会执行恶意代码,因此在大多数情况下不建议使用。
- 通常用于动态执行 JavaScript 代码,但在实际应用中应慎用。
var jsonString = '{"name": "Alice", "age": 25}'; var jsonObj = eval('(' + jsonString + ')'); console.log(jsonObj.name); // 输出: Alice console.log(jsonObj.age); // 输出: 25
在上面的例子中,JSON.parse() 用于解析 JSON 格式的字符串,而 eval() 用于执行包含 JSON 数据的字符串。值得注意的是,在使用 eval() 时,需要将 JSON 字符串用括号括起来,以避免语法错误。