实现简单的JSON.parse函数

手写一个函数以实现 JSON.parse 功能

方法一:使用 eval 函数

eval 函数会将传入的字符串当做 JavaScript 代码进行执行,所以对于类对象字符串使用 eval 函数可以直接转化为对象;但是eval 是一个危险的函数,很容易遭受恶意代码的攻击。
代码实现:

1
2
3
4
5
6
7
8
/* 
** eval 函数不推荐使用,不安全
*/
function parse(jsonStr){
return eval(`(${jsonStr})`)
}

parse('[1,"2",null]') // [1,"2",null]

方法二: 使用 Function 构造函数

Function构造函数的原理是通过 new Function 对象可以动态的创建函数,可以直接解析字符串代码,对于类对象字符串可以通过动态创建函数来 return 出来。
代码实现:

1
2
3
4
5
6
7
8
/* 
** 实现简单的 JSON.parse 函数
*/
function parse(jsonStr) {
return new Function(`return ${jsonStr}`)()
}

parse('[1,"2",null]') // [1,"2",null]