结论

一、数据深拷贝

使用方法:JSON.parse(JSON.stringify(param))

let o = {a: 1, b: 2}
let o1 = JSON.parse(JSON.stringify(o))
let o2 = o console.log(o === o2) // true
console.log(o === o1) // false

二、数据过滤

对一个对象中的数据进行处理,譬如过滤掉对象中值为null/undefined的键,我们通常会用Object.keys()逐个遍历key

现在,我们可以这样做:

let o = {
a: 1,
b: null,
c: 'hello'
} let replacer = (k, v) => {if (v) return v}) let s = JSON.stringify(o, replacer)
let res = JSON.parse(s) > res
< {a: 1, c: "hello"} // 或者
s = JSON.stringify(o)
res = JSON.parse(s, replacer) > res
< {a: 1, c: "hello"}

详细介绍

JSON,全称是JavaScript Object Notation(JavaScript 对象表示法),是一种轻量、可读性高的数据结构。

XML类似,它主要用于服务器和web应用之间的数据传输。

键值对(Keys and Values)

构成JSON的两个重要部分是键和值。它们一起组成一个键值对:

Key:一个键通常被一对双引号包裹住。

Value: 有效值是string, number, array, object, null, false, true中的一种(无undefined)。

Key/Value Pair:键值对遵循特定的语法,行如key: value,键值对以逗号分隔。

JavaScript 中的JSON对象有两个方法:parse、stringify,用来处理JSON格式的数据。

1.JSON.stringify(value[, replacer[, space]])

JSON.stringify() 将一个 JavaScript 对象转化成一个 JSON 字符串。

stringify 函数有两个可选参数:replacer and space.

// converting a simple javascript object to JSON object
let my_details = {
"name" : "John",
"age " : "31" ,
"photo" : "

【May Be DNK】JSON.parse() and JSON.stringify()的两个实用技巧的更多相关文章

  1. JSON.parse() 和 JSON.stringify()

    JSON.parse()和JSON.stringify()   1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf& ...

  2. arguments.callee 调用函数自身用法----JSON.parse()和JSON.stringify()前端js数据转换json格式

    arguments.callee 调用函数自身用法 arguments.callee 在哪一个函数中运行,它就代表哪个函数. 一般用在匿名函数中. 在匿名函数中有时会需要自己调用自己,但是由于是匿名函 ...

  3. 有关javascript中的JSON.parse和JSON.stringify的使用一二

    有没有想过,当我们的大后台只是扮演一个数据库的角色,json在前后台的数据交换中扮演极其重要的角色时,作为依托node的前端开发,其实相当多的时间都是在处理数据,准确地说就是在处理逻辑和数据(这周实习 ...

  4. JSON.parse和JSON.stringify 参数详解

    JSON.parse和JSON.stringify这两个浏览器自带(IE6/7除外)的方法平常我们经常用到,但是一般都只是用到了他们的第一个参数,比如字符串转对象:JSON.parse('{}')   ...

  5. Jquery里面种的 JSON.parse() 与JSON.stringify() 的区别

    JSON.parse()与JSON.stringify()的区别   JSON.parse()[从一个字符串中解析出json对象] Demo: //定义一个字符串 var data='{"N ...

  6. JSON.parse与JSON.stringify

    JSON:JavaScript Object Notation(JavaScript对象表示法):甚至我们就可以大致认为JSON就是Javascript的对象,只不过范围小上一些. JSON的MIME ...

  7. JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

    JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

  8. JSON.parse()和JSON.stringify()的解析与用途

    JSON.parse()和JSON.stringify()的解析与用途 1.parse用于从一个字符串中解析出json对象 如: var str = '{"name":" ...

  9. JS之JSON.parse和JSON.stringify

    这两个函数有兼容性问题, 会报错JSON"未定义 解决方案, 引入json2.js,可以解决浏览器的兼容性 https://link.jianshu.com/?t=https://githu ...

随机推荐

  1. 进制转换(NOIP2000&NOIP水题测试(2017082301))

    题目链接:进制转换 这题得明白其中的数学方法,明白后就不难了. 那么我们应该怎么计算呢? 其实也很简单. 我们依然采取辗转相除法. 但是,对于负的余数,我们需要进行一些处理. 我们怎么处理呢? 很简单 ...

  2. c#泛型与其他语言的对比(深入理解c#)

    1.同c++模板的对比: c++模板有点像是发展到极致的宏.他们非常强大,但代价就是代码膨胀和不易理解. 在c++中使用一个模板时,会为那一套特定的模板实参编译代码,好在模板实参本来就在源代码中一样. ...

  3. centos7 lvm实例

    1.lvm安装 rpm -qa|grep lvm lvm version yum install -y lvm2* 2.磁盘分区 fdisk -l fdisk /dev/xvdb1 #分区结束标记 t ...

  4. 2019.02.09 bzoj2440: [中山市选2011]完全平方数(二分答案+容斥原理)

    传送门 题意简述:qqq次询问(q≤500)(q\le500)(q≤500),每次问第kkk个不被除111以外的完全平方数整除的数是多少(k≤1e9)(k\le1e9)(k≤1e9). 思路:考虑二分 ...

  5. 2018.10.31 NOIP模拟 几串字符(数位dp+组合数学)

    传送门 如果观察到性质其实也不是很难想. 然而考试的时候慌得一批只有心思写暴力233. 下面是几个很有用的性质: c0,1+1≥c1,0≥c0,1c_{0,1 }+1 ≥ c_{1,0} ≥ c_{0 ...

  6. 2018.10.25 uoj#308. 【UNR #2】UOJ拯救计划(排列组合)

    传送门 有一个显然的式子:Ans=∑A(n,i)∗用i种颜色的方案数Ans=\sum A(n,i)*用i种颜色的方案数Ans=∑A(n,i)∗用i种颜色的方案数 这个东西貌似是个NPCNPCNPC. ...

  7. boost-容器

    1.array array相当于是一个增加了STL容器接口的数组,但它不像vector等容器一样可以动态增长,如果需要动态变动array的容量可以使用boost::scoped_array.array ...

  8. CodeForces 916C Jamie and Interesting Graph (构造)

    题意:给定两个数,表示一个图的点数和边数,让你构造出一个图满足 1-  n 的最短路是素数,并且最小生成树也是素数. 析:首先 1 - n 的最短路,非常好解决,直接 1 连 n 就好了,但是素数尽量 ...

  9. SpringBoot初探

    一:项目创建 个人用的是IDEA来做Demo的: 1.先创建一个空项目,然后创建一个基于Maven的java application项目: 2.创建好后配置pom.xml文件并最终reimport & ...

  10. php 验证码 图像存在错误 无法显示 解决方法

    <?php $height = 300; $width = 300; $im = imagecreatetruecolor($width, $height); $white = imagecol ...