【May Be DNK】JSON.parse() and JSON.stringify()的两个实用技巧
结论
一、数据深拷贝
使用方法: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有两个参数:被字符串化的 key
和value
.
// 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()的两个实用技巧相关推荐
- php json.parse,JSON.parse()与JSON.stringify()和eval()使用方法详解
这次给大家带来JSON.parse()与JSON.stringify()和eval()使用方法详解,JSON.parse()与JSON.stringify()和eval()使用的注意事项有哪些,下面就 ...
- JSON.parse和JSON.stringify 参数详解
JSON.parse和JSON.stringify这两个浏览器自带(IE6/7除外)的方法平常我们经常用到,但是一般都只是用到了他们的第一个参数,比如字符串转对象:JSON.parse('{}') ...
- JSON.parse()、JSON.stringify()和eval()的作用
浅谈JSON.parse().JSON.stringify()和eval()的作用 相信大家对于JSON应该不陌生,度娘对这个名词的解释大致如下: "JSON(JavaScript Obje ...
- js JSON.parse和JSON.stringify
JSON.parse 将json字符串转换成对象 JSON.parse(text[, reviver]) reviver可选参数 var students = '{"id": 1, ...
- JSON.parse()、JSON.stringify、 parseInt()
1.JSON.parse() JSON.parse()是Javascript中一个常用的 JSON 转换方法,JSON.parse()可以把JSON规则的字符串转换为JSONObject,JSON.p ...
- JSON的两种方法JSON.parse()、JSON.stringify()
1.JSON.parse() 方法 // JSON是一种数据格式,本质上是字符串// 就是将对象或数组用单引号包裹起来,对象中的属性名使用双引号包裹// JSON.parse() 方法,可将json格 ...
- JS/JavaScript中解析JSON --- JSON.parse()、JSON.stringify()以及$.parseJSON()使用详解
JS/JavaScript中解析JSON --- JSON.parse().JSON.stringify()以及$.parseJSON()使用详解 现在JSON格式在web开发中非常重要,特别是在使用 ...
- 详解JSON.parse 和 JSON.stringify
文章目录 JSON.parse JSON.parse 语法 reviver 参数 JSON.parse 特性 解析的其他方法 JSON.stringify JSON.stringify 语法 repl ...
- JSON.parse和JSON.stringify的用法
平时我们在接收后端返回的json对象通常是一个字符串类型的object,所以一般我们要对这个object进行类型转化后,我们才能使用object里面的数据,而这其中涉及到两个必不可少的方法就是JSON ...
- JSON.parse 解析json字符串时,遇换行符报错
Json字符串转换成Json对象时候,有两种方式: 假设d是json字符串: 1,eval('(' + d + ')'). 2,JSON.parse(d): 但是以上方式有隐患,如果Json字符串有换 ...
最新文章
- shell定时执行hive脚本文件
- Intel汇编语言程序设计学习-第五章 过程-下
- LLVM4更新--简化对象定义
- VM虚拟机下配置centos linux系统
- PLSQL_性能优化系列15_Oracle Explain Plan解析计划解读
- 95-190-540-源码-window-清除器(Evictors)-简介
- web多线程之webworkers
- RDLC报表系列(五) 简单的图表-柱状图
- 手把手教你学51单片机_第四、五章
- android基于xposed框架,学习笔记:Android Xposed 框架入门
- 来势汹汹 两大版本 百公里加速最快小于3.5s 电动车最大黑马居然是TA!
- vscode 初始化HTML结构
- Banner实现图片轮播
- Linux下通过虚拟网卡实现局域网 转发tcp/udp流量
- 如何撤销命令make install的安装结果,或者如何卸载Linux 库library ?
- Python中的list列表 tuple元组 set集合 dictionary字典
- 2021.12- 参加第四届海淀区青少年科普科幻创作活动(一等奖)
- 相机显示无法访问内存卡?看完你就明白了
- vNext中ABP的Exception的Http中的Status Code
- f12键修改网页html,问如何通过F12键来快捷的修改网页
热门文章
- stata陈强:计量经济学及stata应用_陈强 第四章 一元线性回归
- DRM2.0 的身份认证过程
- 华为展望5G未来 安全问题成关键
- 《多媒体在初中数学中的运用研究》课题研究报告
- c语言程序设计教学工作总结,c语言教学的工作总结.docx
- Super-pack按键精灵安卓离线打包发布
- ucore Lab1
- Cox模型中的变量选择(1)---自适应Lasso方法
- 全国python一级考试_全国青少年软件编程(Python)等级考试试卷(一级)测试卷...
- 出租车语音全自动服务器,出租车语音提示器工作原理