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

json是JavaScript 对象表示法(JavaScript Object Notation),是一种简单的数据格式,类似于XML,其格式为名称/值对,数据用逗号隔开,名称必须用双引号括起来。例如:{"name":"wumomo",age:25}

关于需要注意的几点:

1、名称必须用双引号括起来

2、最后一个值后不能加逗号

3、值可以为数字,字符串,对象,数组,Boolean值(true/false),null;不能是函数,undefined或者NaN

json和javascript对象格式有点相似,但是它们也是有很大区别的,同时相互之间可以进行转化。

区别 json javascript对象
含义 一种数据格式 类的实例
传输 可以跨平台数据传输,速度快 不能传输
名称/key 名称必须用双引号括起来   名称可以不加双引号
属性值 最后的值后不能加逗号,值不能是函数/undefined/NaN 可加逗号,可为任意值

json转为js对象   ------  JSON.parse(str)

js对象转为json   ------  JSON.stringify(obj)

在这之前的项目开发中只接触和使用了JSON.parse()和 JSON.stringify()方法的第一个参数,然后也没有去深究,在一次偶然的机会,看到了其他的参数,才知道原来还可以这样。

JSON.parse(text[, reviver])

text -------  必选,要被解析成JavaScript值的字符串

reviver函数:function(key,value) ------ 可选,解析值本身以及它所包含的所有属性,会按照一定的顺序(从内到外)分别的去调用 reviver 函数,如果 reviver 返回 undefined,则当前属性会从所属对象中删除,如果返回了其他值,则返回的值会成为当前属性新的属性值。当遍历到最顶层的值(解析值)时,传入 reviver 函数的参数key为"",value为修改过的解析值。

例如:

JSON.stringify(value[,replace [, space]])

value ------ 必选, 将要序列化成 一个JSON 字符串的值

replacer ------ 可选,过滤函数或者数组,如果该参数为null或者未提供,则对象所有的属性都会被序列化;参数为数组时,只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中,同时转换顺序与在数组中的顺序一样。

space ------ 可选,指定缩进用的空白字符串,用于美化输出,如果是数字,就代表多少个空格,若值小于1,就相当于没有空格;如果是字符串(最多前10个字符),就取字符串代替空格

例如:

toJSON方法

如果一个被序列化的对象拥有 toJSON 方法,那么该 toJSON 方法就会覆盖该对象默认的序列化行为

时间: 2024-10-28 23:03:59

你不知道的JSON.stringify和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()的作用是将js值转换成JSON字符串,而JSON.parse()是将JSON字符串转换成一个对象.也就是说,如果我们用JSON.stringify()将一个对象变成了字符串,那么使用JSON.parse()将字符串还原成对象. let obj = { name:"song", age:10 }; let changeObj =JSON.stringify(obj); console.l

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()

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

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

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

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

标记在IE8以下时使用JSON.stringify报JSON未定义错误的问题

调用的页面里引用json2.js即可解决问题(推荐方法). 即:<script type="text/JavaScript" src="js/json2.js"></script> json2.js如下: // json2.js   // 2017-06-12   // Public Domain.   // NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.       // US

(转)JS之——解决IE6、7、8使用JSON.stringify报JSON未定义错误的问题

https://blog.csdn.net/l1028386804/article/details/53439755 在通过JavaScript将对象类型的参数通过JSON.stringify转换成字符串传递时,IE6.7.8会报:“JSON”未定义 的错误.我们可以通过在html文件的head头内引入json2.js文件来解决 <!--[if lt IE 9]> <scriptsrc="json2.js"></script><![endif]