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 相关文章推荐
JavaScript实现动态增加文件域表单
Feb 12 Javascript
jquery获取当前点击对象的value方法
Feb 28 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
May 29 Javascript
jquery实现一个简单好用的弹出框
Sep 26 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
Nov 23 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
Oct 09 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
Oct 30 Javascript
webpack中使用iconfont字体图标的方法
Feb 22 Javascript
关于微信小程序bug记录与解决方法
Aug 15 Javascript
微信小程序使用component自定义toast弹窗效果
Nov 27 Javascript
vuejs中父子组件之间通信方法实例详解
Jan 17 Javascript
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
使用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结合飞信 免费天气预报短信
2009/05/07 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
js判断游览器类型及版本号的代码
2014/05/11 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
python sort、sorted高级排序技巧
2014/11/21 Python
Python字符串处理函数简明总结
2015/04/13 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
构造器Constructor是否可被override?
2013/08/06 面试题
中式结婚主持词
2014/03/14 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
募捐感谢信
2015/01/22 职场文书
遗嘱范文
2015/08/07 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
《窃读记》教学反思
2016/02/18 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
担保书范文
2019/07/09 职场文书
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技