1.JSON.stringify()用于从一个对象解析出字符串,eg:

var obj = {"name":"奔跑的蜗牛","age":"200"};
console.log(JSON.stringify(obj));
// 结果:{"name":"奔跑的蜗牛","age":"200"};
console.log(typeof JSON.stringify(obj));
// 结果:string

2.JSON.parse()用于从一个字符串中解析出json对象,eg:

var str = '{"name":"奔跑的蜗牛","age":"200"}';
console.log(JSON.parse(str));
// 结果:Object {name: "奔跑的蜗牛", age: "200"};
console.log(typeof JSON.parse(str));
// 结果:object

【注】单引号在外,里面应该用双引号,否则报错(3.html:16 Uncaught SyntaxError: Unexpected identifier);双引号在外,里面应该用单引号

3.eval(string)

语法说明:

eval()函数可计算某个字符串,并执行其中的的JavaScript代码。
如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。
string:必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。
var obj = '{"name":"奔跑的蜗牛","age":200}';
var evalobj=eval('('+obj+')');
console.log(evalobj);
// 结果:Object {name: "奔跑的蜗牛", age: 200}
console.log(typeof evalobj);
// 结果:object

解释:

加上圆括号的目的:是迫使eval函数,在处理JavaScript代码的时候,强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行

4.JSON.parse()和eval(string),两者的区别

var value = 1;
var jsonstr = '{"data1":"hello","data2":++value}';
var data1 = eval('('+jsonstr+')');console.log(data1);//这时value值为2
var data2=JSON.parse(jsonstr);console.log(data2);//报错

结果:

eval在解析字符串时,会执行该字符串中的代码(这样的后果是相当恶劣的),
如上例中,由于用eval解析一个json字符串而造成原先的value的值改变这是极其不安全的,
很容易被恶意的用户在json字符串注入木马链接。
所以推荐使用JSON.parse()来解析字符串。
该方法不仅可以捕捉JSON中的语法错误,并且允许你传入一个函数,用来过滤或转换解析结果

JSON.stringify()、JSON.parse()和eval(string)的更多相关文章

  1. JSON.stringify(),JSON.parse(),eval(string)

      JSON.stringify()用于从一个对象解析出字符串 : var obj = {"name":"week","age":" ...

  2. JSON.stringify(),JSON.parse(),toJSON()方法使用

    JSON.stringify(),将value(Object,Array,String,Number...)序列化为JSON字符串    JSON.parse(), 将JSON数据解析为js原生值   ...

  3. JSON.stringify(),JSON.parse(),toJSON()使用方法总结

    今天在看<你不知道的javascript-中>第四章‘强制类型转换’的时候,发现JSON.stringify(),JSON.parse(),toJSON()有很多细节,自己也就总结测试了一 ...

  4. JSON.stringify & JSON.parse 简析

    以前用到JSON的场景也不少,但是没有仔细的研究过,这几天趁着一个需求用到了,就整理了一下相关用法. 一. JSON.stringify() 1. 语法  JSON.stringify(value[, ...

  5. JSON stringify and parse

    来源 : http://javascript.ruanyifeng.com/stdlib/date.html //解析json也可以传入一个方法, 基本上和stringify差不多,不过是逆序的, 要 ...

  6. JSON.stringify() / JSON.parse()

    JSON.stringify() 这个方法可以把javascript对象转换成json字符串. JSON.parse() 这个方法可以把 json 字符串转换成 javascript对象. [下面来看 ...

  7. JSON.stringify,JSON.parse方法

    var obj={name:'zhangsan',age:'18'};/** js对象--->JSON字符串* JSON.stringify(js对象) --转化为--> JSON字符串* ...

  8. 解决IE6 IE7 JSON.stringify JSON 未定义问题

    在项目中引入json2.js 官方http://www.json.org/ 源码地址:https://github.com/douglascrockford/JSON-js $.ajax({ url: ...

  9. JSON.parse() 和 JSON.stringify()的简单介绍

    参考地址: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse ht ...

随机推荐

  1. haslayout详解

    定义 haslayout是IE7-浏览器的特有属性.hasLayout是一种只读属性,有两种状态:true或false.当其为true时,代表该元素有自己的布局,否则代表该元素的布局继承于父元素. [ ...

  2. JSP网站开发基础总结《十》

    经过上一篇的介绍相信大家对JSP提供的过滤器一定有了一个概念,本篇我们就一起再来研究一下关于创建多个过滤器时,如果有两个以上过滤器的过滤规则相同,那么这些过滤器的执行顺序如何呢?答案是根据我们在web ...

  3. c#事件与委托

    C#.net 目录(?)[-] 将方法作为方法的参数 将方法绑定到委托 事件的由来 事件和委托的编译代码 委托事件与Observer设计模式 范例说明 Observer设计模式简介 实现范例的Obse ...

  4. MAC下安装与配置MySQL

    MAC下安装与配置MySQL   MAC下安装与配置MySQL 一 下载MySQL 访问MySQL的官网http://www.mysql.com/downloads/ 然后在页面中会看到“MySQL ...

  5. 【圣诞特献】Web 前端开发精华文章推荐【系列二十一】

    <Web 前端开发精华文章推荐>2013年第九期(总第二十一期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和  ...

  6. Web性能测试参数

    1.前言 最近在项目中引入了keyless,需要测试一下对web的性能影响.常见的web测试工具有ab.siege.http_load等.我用的是Apache的ab测试工具.在测试web性能之前,首先 ...

  7. 用Vue实现一个全选指令

    最近用vue做了两个项目,都需要实现全选反选的功能,两个项目用了两种实现方法,第一个项目用vue的computed,第二个项目用指令来实现,用起来,发觉指令更加方便. 第一次做全选的时候是刚开始接触v ...

  8. Elasticsearch增删改查 之 —— Get查询

    GET API是Elasticsearch中常用的操作,一般用于验证文档是否存在:或者执行CURD中的文档查询.与检索不同的是,GET查询是实时查询,可以实时查询到索引结果.而检索则是需要经过处理,一 ...

  9. Winform如何实现ComboBox模糊查询

    最近朋友问了一个关于Winform实现ComboBox模糊查询的知识点,自己好久没有搞Winform了,就上手练了一下,废话不多说,进入正题. 前台设计: 前台就是一个简单的Form窗体+一个Comb ...

  10. [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(2)

    在 DependencyInjection项目代码分析4-微软的实现(1)中介绍了“ServiceTable”.“ServiceEntry”.“IGenericService”.“IService”. ...