JSON(JavaScript Object Notation)是一种轻量级的数据格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是Javascript原生格式,这意味着在javascript中处理JSON数据不需要任何特殊的API或工具包,而且效率非常高。
基本格式:
varjsonData='{"data1":"Hello,","data2":"world!"}'
调用方法jsonData.data1,jsonData.data2
很多json数据存入数组
var jsonData=[
    {"name":"LiLei","age":19,"sex":"male"},
    {"name":"HanMei","age":18,"sex":"famale"}
]
调用方法jsonData[0].name,jsonData[1].sex
总体而言,json是相对比较容易的理解和使用的,但同时存在很多的陷阱,如果不注意的话很容易掉进去。
json的的解析方法 
json的解析方法共有两种:eval_r() 和 JSON.parse(),使用方法如下:
var jsonData = '{"data1":"Hello,", "data2":"world!}';
var evalJson=eval_r('('+jsonData+')');
var jsonParseJson=JSON.parse(jsonData);
这样就把jsonData这个json格式的字符串转换成了JSON对象。
二者的区别如下:
var value = 1;
var jsonstr = '{"data1":"hello","data2":++value}';
var data1 = eval_r('('+jsonstr+')');
console.log(data1);//这时value值为2
var data2=JSON.parse(jsonstr);
console.log(data2);//报错
可以看到控制输出台的结果,第一个eval_r()顺利执行,第二个报错了。从上例就可以明显地看出,eval在解析字符串时,会执行该字符串中的代码(这样的后果是相当恶劣的),如上例中,由于用eval解析一个json字符串而造成原先的value的值改变。
《高性能Javascript》一书即指出:
警告:关于JSON和eval需要注意的是:在代码中使用eval是很危险的,特别是用它执行第三方的JSON数据(其中可能包含恶意代码)时,尽可能使用JSON.parse()方法解析字符串本身。该方法可以捕捉JSON中的语法错误,并允许你传入一个函数,用来过滤或转换解析结果。如果此方法以备Firfox 3.5 、IE8 及 Safari 4 原生支持。大多数javascript类库包含的JSON解析代码会直接调用原生版本,如果没有原生支持的话,会调用一个略微不那么强大的非原生版本来处理。

转载于:https://www.cnblogs.com/eason1999/p/5527413.html

JSON.parse和eval的区别相关推荐

  1. JSON.parse()和eval()的区别

    json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢? JSON.parse()之可以解析json格式的数据,并且会对要解析 ...

  2. JSON.parse与eval的区别

    JSON.parse与eval和能将一个字符串解析成一个JSON对象,但还是有挺大区别. 测试代码 var A = "{ a: 1 , b : 'hello' }"; var B ...

  3. javascript JSON.parse和eval的区别

    SON.parse()用来将标准json字符串转换成js对象:eval()除了可以将json字符串(非标准的也可以,没有JSON.parse()要求严格)转换成js对象外还能用来动态执行js代码.例如 ...

  4. JSON.parse()、eval()、JSON.stringify()、jQuery.parseJSON()的用法

    一: JSON数据的两种解析方法 JSON.parse() .eval ()方法 1 :JSON.parse() : 用于将一个 JSON 字符串转换为 JavaScript 对象. var str ...

  5. JSON.parse和evel的区别

    我们将一个字符串解析成json对象时可以使用两种方法: 假设我们有一个json格式的字符串: '{ "student" : [ {"name":"鸣人 ...

  6. JSON.parse()、eval()和JSON.stringify()

    1.什么是JSON? JSON全称是JavaScript Object Notation,是一种轻量级的数据交换格式.JSON 与XML具有相同的特性,是一种数据存储格式,但是JSON相比XML 更易 ...

  7. JSONObject JSONArray各种用法以及js eval()函数与JSON.parse的区

    2019独角兽企业重金招聘Python工程师标准>>> 一.在后台使用JSONObject对象,并将从数据库中取出来的数据直接使用 JSONObject的put方法放进去,再将这个J ...

  8. JSON.parse()和jQuery.parseJSON()的区别

    jQuery.parseJSON(jsonString) : 将格式完好的JSON字符串转为与之对应的JavaScript对象   (jquery 方法) 1 2 3 var  str =  '[{& ...

  9. eval、json.parse()的介绍和使用注意点

    原文:eval.json.parse()的介绍和使用注意点 eval和json.parse的使用 eval:来源于官网 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScri ...

  10. json.stringify()与json.parse()的区别,json.stringify()的妙用

    一.JSON.stringify()与JSON.parse()的区别 最近做项目,发现JSON.stringify()使用场景真的挺多,我们都知道JSON.stringify()的作用是将 JavaS ...

最新文章

  1. 零基础怎么学UI设计
  2. Linux备份检查工具,6种优化Linux系统备份的应用与技巧
  3. 发布新的个人博客地址和微信公众号
  4. Linux上搭建h2引擎加载h2文件
  5. 2010年下半年软件评測师(下午)试题分析与解答
  6. python基本数据类型(一)-python3.0学习笔记
  7. 微软已成全球SaaS老大,谁将成为中国SaaS行业龙头
  8. Java私塾中级note
  9. java非主流火星文输入法_火星文输入法
  10. docker批量导入导出镜像
  11. python画circos图_CIRCOS圈图绘制 – 最简单绘图和解释
  12. 【转】Knowledge-Distillation 知识蒸馏论文集合
  13. composer 与php autoload,命名空间
  14. 还不重视!脸上有螨虫的几种表现?
  15. 用狼的处世哲学做SOHO 一
  16. 工程机械租赁商如何对世界各地设备进行统一集中管理
  17. 5gh掌上云计算认证不通过_华为云计算认证含金量怎么样?
  18. 攻防世界-Misc-新手练习记录
  19. halcon中放大图片
  20. 新玺配资:热点轮动明显 均衡配置策略

热门文章

  1. Using BLAS and LAPACK from C/C++
  2. 《转》牛顿法与拟牛顿法学习笔记
  3. 【解题报告】SRM-08
  4. android kl文件
  5. 【转】SpringMVC整合websocket实现消息推送及触发
  6. Python Jquery学习
  7. [bzoj3223]Tyvj 1729 文艺平衡树
  8. 基于vitamio的网络电视直播源代码
  9. 在运行 Red Hat 或 Cent OS 的虚拟机中扩展逻辑卷
  10. JavaScript--如何插入JS