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. 真正的mybatis_redis二级缓存

    网上流传的代码缓存失效存在严重问题. 思路....以后再细说 目前的方案还不够完美,失效力度控制不够细. 主要代码 import java.io.BufferedReader; import java ...

  2. 【解决方案】安装vssdk_full.exe遇到的问题

    Stop Block: CompatibilityMode : Windows Program Compatibility mode is on. Turn it off and then try S ...

  3. 微信小程序中rpx与rem单位使用

    原作者: 小小小   来自: 授权地址 本文讲解rpx和rem应用于微信小程序,如果你还没有入门,建议先从下面看起: 微信小程序官方文档web app变革之remrpx单位官方文档rpx单位基础介绍 ...

  4. 没有R.java问题找不到getActionBar()方法

    android项目,可是项目中没有重要的R.java,并且报错,说是找不到getActionBar()方法,上网寻找原因,终于寻得解决方法:    1.解决项目中没有R.java问题.在Eclipse ...

  5. Jquery基本用法总结

    选择器$("#mydiv") 通过ID$("p#myp") 选择id=myp 的所有p元素(组合型)$(".mydiv") 通过 class ...

  6. SQL Server安全(4/11):许可(Permissions)

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  7. Java魔法堂:四种引用类型、ReferenceQueue和WeakHashMap

    一.前言 JDK1.2以前只提供一种引用类型——强引用 Object obj = new Object(); .而JDK1.2后我们多另外的三个选择分别是软引用 java.lang.ref.SoftR ...

  8. RegularHelper

    private const string m_NumberPattm = @"^[-+]?(0{1}|(([1-9]){1}[0-9]{0,6}))?$"; private con ...

  9. ASP.NET MVC系列:添加模型

    模型(Model)是应用程序中用于处理应用程序数据逻辑的部分;通常模型对象在数据库中存取数据 添加模型类 在解决方案中右击Models文件夹,然后选择“添加”,在“添加”项里选择“类”:或者选中Mod ...

  10. 在Windows Phone 8中使用Live Connect并保持登陆状态

    Live Connect可以让各种客户端访问Live账号.获取好友列表.访问One Drive的文件等,官方地址在此:http://msdn.microsoft.com/zh-cn/live/ff51 ...