结论

一、数据深拷贝

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

let o = {a: 1, b: 2}
let o1 = JSON.parse(JSON.stringify(o))
let o2 = oconsole.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" : "?"
}let my_details_in_json = JSON.stringify(my_details);// "{"name":"John","age ":"31","photo":"?"}" --> my_details_in_json

当然,你也可以转化数组:

let  my_details = ['John ', 31, '?'];  const myJSONdetails = JSON.stringify(my_details);  // "["John ",31,"?"]" --> myJSONdetails

replacer参数可以选择函数或者数组。

作为函数——>Replacer有两个参数:被字符串化的 keyvalue.

// in this example we will convert small letters to capital lettersfunction replacer(key, value) {if (typeof value === 'string') {return value.toUpperCase();}return value;
}let my_details =   {"name"  : "john","age "  : "31" ,"photo" : "?"}JSON.stringify(my_details, replacer);> "{"name"  : "JOHN", "age "  : "31" , "photo" : "?"}"

作为数组——>Replacer中的值与结果中的key值一一对应,多余的key/value将被剔除。

let replacer = ["name" , "age" ];let my_details =  {"name"  : "john","age"  : "31" ,"photo" : "?"
};JSON.stringify(my_details, replacer);> "{"name": "john", "age": "31"}"

space 参数结果字符串中的间距,它的值类型为字符串/数字。不常用。

2. JSON.parse(JSONObject,[,reviver] )

此方法用于解析JSON字符串数据为一个JavaScript对象。

// converting a simple javascript object to JSON objectlet my_details =  {"name"  : "John","age "  : "31" ,"photo" : "?"}let my_details_in_json = JSON.stringify(my_details);// "{"name":"John","age ":"31","photo":"?"}" --> my_details_in_jsonlet parsedData = JSON.parse(my_details_in_json);output "age "  :"31","name"  :"John","photo" :"?"

JSON.parse() 可以使用一个函数 (reviver) 作为第二个参数,改变返回对象中的值。

JSON.parse(my_details_in_json , function (key, value) { if (typeof value === ‘string’) { return value.toUpperCase(); } return value; });

参考:

https://www.json.org/

https://medium.com/mindorks/json-parse-and-json-stringify-in-javascript-4de609c19d46

.

转载于:https://www.cnblogs.com/fayin/p/9881630.html

【May Be DNK】JSON.parse() and JSON.stringify()的两个实用技巧相关推荐

  1. php json.parse,JSON.parse()与JSON.stringify()和eval()使用方法详解

    这次给大家带来JSON.parse()与JSON.stringify()和eval()使用方法详解,JSON.parse()与JSON.stringify()和eval()使用的注意事项有哪些,下面就 ...

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

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

  3. JSON.parse()、JSON.stringify()和eval()的作用

    浅谈JSON.parse().JSON.stringify()和eval()的作用 相信大家对于JSON应该不陌生,度娘对这个名词的解释大致如下: "JSON(JavaScript Obje ...

  4. js JSON.parse和JSON.stringify

    JSON.parse 将json字符串转换成对象 JSON.parse(text[, reviver]) reviver可选参数 var students = '{"id": 1, ...

  5. JSON.parse()、JSON.stringify、 parseInt()

    1.JSON.parse() JSON.parse()是Javascript中一个常用的 JSON 转换方法,JSON.parse()可以把JSON规则的字符串转换为JSONObject,JSON.p ...

  6. JSON的两种方法JSON.parse()、JSON.stringify()

    1.JSON.parse() 方法 // JSON是一种数据格式,本质上是字符串// 就是将对象或数组用单引号包裹起来,对象中的属性名使用双引号包裹// JSON.parse() 方法,可将json格 ...

  7. JS/JavaScript中解析JSON --- JSON.parse()、JSON.stringify()以及$.parseJSON()使用详解

    JS/JavaScript中解析JSON --- JSON.parse().JSON.stringify()以及$.parseJSON()使用详解 现在JSON格式在web开发中非常重要,特别是在使用 ...

  8. 详解JSON.parse 和 JSON.stringify

    文章目录 JSON.parse JSON.parse 语法 reviver 参数 JSON.parse 特性 解析的其他方法 JSON.stringify JSON.stringify 语法 repl ...

  9. JSON.parse和JSON.stringify的用法

    平时我们在接收后端返回的json对象通常是一个字符串类型的object,所以一般我们要对这个object进行类型转化后,我们才能使用object里面的数据,而这其中涉及到两个必不可少的方法就是JSON ...

  10. JSON.parse 解析json字符串时,遇换行符报错

    Json字符串转换成Json对象时候,有两种方式: 假设d是json字符串: 1,eval('(' + d + ')'). 2,JSON.parse(d): 但是以上方式有隐患,如果Json字符串有换 ...

最新文章

  1. shell定时执行hive脚本文件
  2. Intel汇编语言程序设计学习-第五章 过程-下
  3. LLVM4更新--简化对象定义
  4. VM虚拟机下配置centos linux系统
  5. PLSQL_性能优化系列15_Oracle Explain Plan解析计划解读
  6. 95-190-540-源码-window-清除器(Evictors)-简介
  7. web多线程之webworkers
  8. RDLC报表系列(五) 简单的图表-柱状图
  9. 手把手教你学51单片机_第四、五章
  10. android基于xposed框架,学习笔记:Android Xposed 框架入门
  11. 来势汹汹 两大版本 百公里加速最快小于3.5s 电动车最大黑马居然是TA!
  12. vscode 初始化HTML结构
  13. Banner实现图片轮播
  14. Linux下通过虚拟网卡实现局域网 转发tcp/udp流量
  15. 如何撤销命令make install的安装结果,或者如何卸载Linux 库library ?
  16. Python中的list列表 tuple元组 set集合 dictionary字典
  17. 2021.12- 参加第四届海淀区青少年科普科幻创作活动(一等奖)
  18. 相机显示无法访问内存卡?看完你就明白了
  19. vNext中ABP的Exception的Http中的Status Code
  20. f12键修改网页html,问如何通过F12键来快捷的修改网页

热门文章

  1. stata陈强:计量经济学及stata应用_陈强 第四章 一元线性回归
  2. DRM2.0 的身份认证过程
  3. 华为展望5G未来 安全问题成关键
  4. 《多媒体在初中数学中的运用研究》课题研究报告
  5. c语言程序设计教学工作总结,c语言教学的工作总结.docx
  6. Super-pack按键精灵安卓离线打包发布
  7. ucore Lab1
  8. Cox模型中的变量选择(1)---自适应Lasso方法
  9. 全国python一级考试_全国青少年软件编程(Python)等级考试试卷(一级)测试卷...
  10. 出租车语音全自动服务器,出租车语音提示器工作原理