JSON.stringify()、eval(),JSON.parse()各自的区别于作用

JSON.stringify(value [, replacer] [, space])
value
必需。 要转换的 JavaScript 值(通常为对象或数组)。
replacer
可选。 用于转换结果的函数或数组。 如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。 使用返回值而不是原始值。 如果此函数返回 undefined,则排除成员。 根对象的键是一个空字符串:""。 如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。 成员的转换顺序与键在数组中的顺序一样。 当 value 参数也为数组时,将忽略 replacer 数组。
space
可选。 向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取。 如果省略 space,则将生成返回值文本,而没有任何额外空格。 如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。 如果 space 是一个非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符。 如果 space 是长度大于 10 个字符的字符串,则使用前 10 个字符。 返回一个包含 JSON 文本的字符串。 JSON.stringify()、eval()都是用来解析字符串并将字符串转换为json数据 var jsonData = ‘{"data1":"Hello,", "data2":"world!}‘; var evalJson=eval(‘(‘+jsonData+‘)‘); 加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行 var jsonParseJson=JSON.parse(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在解析字符串时,会执行该字符串中的代码(这样的后果是相当恶劣的), 如上例中,由于用eval解析一个json字符串而造成原先的value的值改变这是极其不安全的, 很容易被恶意的用户在json字符串注入木马链接。 所以推荐使用JSON.parse()来解析字符串。 该方法不仅可以捕捉JSON中的语法错误,并且允许你传入一个函数,用来过滤或转换解析结果
时间: 2024-08-26 09:59:12

JSON.stringify()、eval(),JSON.parse()各自的区别于作用的相关文章

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

一.JSON.stringify()与JSON.parse()的区别 最近做项目,发现JSON.stringify()使用场景真的挺多,我们都知道JSON.stringify()的作用是将 JavaScript 值转换为 JSON 字符串,而JSON.parse()可以将JSON字符串转为一个对象. 简单点说,它们的作用是相对的,我用JSON.stringify()将对象a变成了字符串c,那么我就可以用JSON.parse()将字符串c还原成对象a. let arr = [1,2,3]; JSO

JSON.stringify()与JSON.parse()区别

一.JSON.stringify()与JSON.parse()的区别 JSON.stringify()的作用是将 JavaScript 对象转换为 JSON 字符串,而JSON.parse()可以将JSON字符串转为一个对象. 简单点说,它们的作用是相对的,我用JSON.stringify()将对象a变成了字符串c,那么我就可以用JSON.parse()将字符串c还原成对象a. let arr = [1,2,3]; JSON.stringify(arr);//'[1,2,3]' typeof J

关于JSON.stringify()与JSON.parse()

一.JSON.stringify()与JSON.parse()的区别 JSON.stringify()的作用是将js值转换成JSON字符串,而JSON.parse()是将JSON字符串转换成一个对象.也就是说,如果我们用JSON.stringify()将一个对象变成了字符串,那么使用JSON.parse()将字符串还原成对象. let obj = { name:"song", age:10 }; let changeObj =JSON.stringify(obj); console.l

Js中JSON.stringify()与JSON.parse()与eval()详解及使用案例

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语言,作用是易于阅读和编写,同时也易于机器解析和生成(一般用于网络传输速率). 一:JSON.parse(); 作用:将json字符串转换成json对象 语法:JSON. parse(text[,reviver]). 参数: text:必选,一个有效的json字符串. reviver:可选. 返回值:

JSON eval()和parse()方法以及stringfy()方法 作用

(1)把 JSON 文本转换为 JavaScript 对象 由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象. 语法:var obj = eval ("(" + jsonTxt + ")");  其中jsonTxt是JSON文本. 实例如下: var jsonTxt = '{"name":"leinov","

你不知道的JSON.stringify和JSON.parse

json是JavaScript 对象表示法(JavaScript Object Notation),是一种简单的数据格式,类似于XML,其格式为名称/值对,数据用逗号隔开,名称必须用双引号括起来.例如:{"name":"wumomo",age:25} 关于需要注意的几点: 1.名称必须用双引号括起来 2.最后一个值后不能加逗号 3.值可以为数字,字符串,对象,数组,Boolean值(true/false),null:不能是函数,undefined或者NaN json

JSON.stringify()和JSON.parse()

parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":"23"}' 结果: JSON.parse(str) Object age: "23" name: "huangxiaojian" __proto__: Object 注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常. stringify(

JSON.stringify 和 Json.parse

JSON.stringify :这个函数的作用主要是为了序列化对象的.JSON.Parse     : 将 JavaScript 对象表示法 (JSON) 字符串转换为对象 简单演示他们的使用: 场景:使用 JSON.stringify 将数组转换成 JSON 字符串,然后使用 JSON.parse 将该字符串重新转换成数组. var arr = ["Tom", "Jerry", "Lucy"]; var str = JSON.stringify

JSON.stringify与JSON.parse

JSON.stringify(value [, replacer] [, space]) 用于将 对象 --> JSON 字符串. value:对象.数组.类 replacer: 数组时:value存在,那么就以第二个参数的值做key,第一个参数的值为value进行表示,如果不存在,就忽略. 方法时:把系列化后的每一个对象(记住是每一个)传进方法里面进行处理.  3.space:分隔符.没有的话则直接输出:是数字则定义缩进几个字符:转义字符\t则表示回车 作用: 比如后台数据返回:{"co