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 相关文章推荐
利用window.name实现windowStorage代码分享
Jan 02 Javascript
jsp网页搜索结果中实现选中一行使其高亮
Feb 17 Javascript
Javascript基础教程之比较操作符
Jan 18 Javascript
jQuery切换所有复选框选中状态的方法
Jul 02 Javascript
深入解析JavaScript中的arguments对象
Jun 12 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
AngularJS教程之环境设置
Aug 16 Javascript
JS异步函数队列功能实例分析
Nov 28 Javascript
React中常见的动画实现的几种方式
Jan 10 Javascript
element-ui 表格数据时间格式化的方法
Aug 24 Javascript
Node.js API详解之 os模块用法实例分析
May 06 Javascript
js不常见操作运算符总结
Nov 20 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
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
js 加载并解析XML字符串的代码
2009/12/13 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
python实现红包裂变算法
2016/02/16 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
顶岗实习计划书
2014/01/10 职场文书
小学生演讲稿
2014/01/12 职场文书
《金子》教学反思
2014/04/13 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
检讨书怎么写
2015/05/07 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技