json.stringify()与json.parse()的区别以及用处


Posted in Javascript onJanuary 25, 2021

一、JSON.stringify()和JSON.parse() 区别

我们都用过JSON.stringify()和JSON.parse() ,从名字上就能知道
JSON.stringify()的作用是将JavaScript对象转换为JSON 字符串
JSON.parse()可以将JSON字符串转为一个对象。

通俗易懂版:

  • JSON.stringify() 将对象a转化成字符串s;
  • JSON.parse() 将字符串s转化成对象a;

简单点说,它们的作用是相对的,我用JSON.stringify()将对象a变成了字符串c,那么我就可以用JSON.parse()将字符串c还原成对象a。

let arr = [1,2,3];
JSON.stringify(arr);//'[1,2,3]'
typeof JSON.stringify(arr);//string

let string = '[1,2,3]';
console.log(JSON.parse(string))//[1,2,3]
console.log(typeof JSON.parse(string))//object

在使用JSON.parse()需要注意一点,由于此方法是将JSON字符串转换成对象,所以你的字符串必须符合JSON格式,即键值都必须使用双引号包裹:

let a = '["1","2"]';
let b = "['1','2']";
console.log(JSON.parse(a));// Array [1,2]
console.log(JSON.parse(b));// 报错

二、JSON.stringify()妙用

1.判断数组是否包含某对象,或者判断对象是否相等。

//判断数组是否包含某对象
let data = [
  {name:'掘金'},
  {name:'css学习'},
  {name:'js学习'},
  ],
  val = {name:'掘金'};
JSON.stringify(data).indexOf(JSON.stringify(val)) !== -1; // true

//判断两数组/对象是否相等
let a = [1,2,3],
  b = [1,2,3];
JSON.stringify(a) === JSON.stringify(b);//true

2.让localStorage/sessionStorage可以存储对象。

localStorage/sessionStorage默认只能存储字符串,而实际开发中,我们往往需要存储的数据多为对象类型,那么这里我们就可以在存储时利用json.stringify()将对象转为字符串,而在取缓存时,只需配合json.parse()转回对象即可。

//存
function setLocalStorage(key,val){
  window.localStorage.setItem(key,JSON.stringify(val));
};
//取
function getLocalStorage(key){
  let val = JSON.parse(window.localStorage.getItem(key));
 window.localStorage.removeItem(key)
  return val;
};
//测试
let data = [
  {name:'掘金'},
  {name:'css学习'},
  {name:'js学习'},
  ];
setLocalStorage('STORAGEDATE',data);
let a = getLocalStorage('STORAGEDATE');

3.实现对象深拷贝

实际开发中,如果怕影响原数据,我们常深拷贝出一份数据做任意操作,其实使用JSON.stringify()与JSON.parse()来实现深拷贝是很不错的选择。

//深拷贝
function deepClone(data) {
  let _data = JSON.stringify(data),
    dataClone = JSON.parse(_data);
  return dataClone;
};
//测试
let arr = [1,2,3],
  _arr = deepClone(arr);
arr[0] = 2;
console.log(arr,_arr)//[2,2,3] [1,2,3]

到此这篇关于json.stringify()与json.parse()的区别以及用处的文章就介绍到这了,更多相关json.stringify()与json.parse()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js实现ASP分页函数 HTML分页函数
Sep 22 Javascript
js 动态加载事件的几种方法总结
Dec 25 Javascript
jquery 图片缩放拖动的简单实例
Jan 08 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
有关jquery与DOM节点操作方法和属性记录
Apr 15 Javascript
jquery实现无刷新验证码的简单实例
May 19 Javascript
微信小程序 火车票查询实例讲解
Oct 17 Javascript
jQuery动态生成Bootstrap表格
Nov 01 Javascript
JQuery 获取多个select标签option的text内容(实例)
Sep 07 jQuery
vuex的使用及持久化state的方式详解
Jan 23 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
Apr 20 Javascript
Javascript组合继承方法代码实例解析
Apr 02 Javascript
使用vue3重构拼图游戏的实现示例
Jan 25 #Vue.js
ReactRouter的实现方法
Jan 25 #Javascript
Javascript中的奇葩知识,你知道吗?
Jan 25 #Javascript
vue 计算属性和侦听器的使用小结
Jan 25 #Vue.js
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
Jan 25 #Javascript
vue keep-alive的简单总结
Jan 25 #Vue.js
JS实现简易日历效果
Jan 25 #Javascript
You might like
PHP小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
PHP打印输出函数汇总
2016/08/28 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
python fabric实现远程操作和部署示例
2014/03/25 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
Python处理CSV与List的转换方法
2018/04/19 Python
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
python3实现逐字输出的方法
2019/01/23 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
python打包生成so文件的实现
2020/10/30 Python
法律专业推荐信范文
2013/11/29 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
保护环境标语
2014/06/09 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
入党函调证明材料
2014/12/24 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
入党培养人考察意见
2015/06/08 职场文书
团结主题班会
2015/08/13 职场文书