ajax中解析JSON的两种方法的比较与分析

(EVAL); / /这个方法不推荐

解析方法

一种或两种方法的区别

首先,我们用JSON格式初始化一个对象:


无功jsondate =名称{:周星驰

无功jsonobj = eval('(' + jsondate + ')'); / /(EVAL)方法;

无功jsonobj = JSON.parse(jsondate); / / JSON.parse()方法;




然后打电话到控制台:

console.log(jsonobj。名称); / /两方法可以正确的输入周星驰

那么这两种方法有什么区别呢(下面我们稍微修改一下代码,蓝色字体是修改的部分)


无功jsondate =名称{:警告(你好)、年龄:23 }

无功jsonobj = eval('(' + jsondate + ')'); / /(EVAL)方法;

console.log(jsonobj。年龄); / /将首先执行警报输出Hello然后输出23




Change JSON.parse();方法:


无功jsondate =名称{:警告(你好)、年龄:23 }

无功jsonobj = JSON.parse(jsondate); / / JSON.parse()方法;

cosole.log(jsonobj。年龄) / /报错,这个错误告诉我们,字符串无效




摘要:eval();当方法是解析的,它不会判断字符串是否是合法的,并在JSON对象的js方法也会被执行。这是非常危险的,而JSON.parse(),该方法的优点是不需要多说,推荐这种方法。(一个未知的朋友可以在自己的主机上测试它)

二、可拓问题

复制代码代码如下所示:

无功jsondate =名称{:周星驰



你可以看到上面的测试被用来装在红色括号外部引用,这是关键,行情却往往被忽视,因为eval(JSON。解析器);和();这两种方法的参数可以只接受字符串只能解析字符串!!

我没有思维,我们在初始化的时候没有引号,它本身是一个JS对象,你可以直接访问对象本身的属性和方法;为什么引用到一个字符串然后eval(JSON。解析);或();不解决,既不环保低效的

原因很简单:前端只能为后台提供字符串数据格式,后台返回前台查看返回的数据格式,字符串在使用后必须解析。

这个小问题通常被忽略,不太关心,我之所以好奇是因为我对背景了解不够,把这个问题抛出来,希望能帮助一些不熟悉背景的朋友。知道正在发生的事情自然会加深内存,在开发过程中不会遗漏。



以上是本文的全部内容,希望大家能喜欢。