【红宝书】第20章.JSON
JSON是一种轻量级的数据格式。JSON使用JS语法的子集表示对象、数组、字符串、数值、布尔值和null,不支持undefined
JSON.stringify()
// JSON.stringify(arg1,arg2,arg3)
// 第一个参数为要序列化的对象
// 第二个参数为过滤器,可以是数据或者方法,非必填
// 第三个参数为是否在JSON字符串中保留缩进,若是数值表示的是每个级别缩进的空格数,非必填
let book={
title:"九州缥缈录",
author:"江南",
year:2015,
chapter:['蛮荒','苍云古齿','天下名将','辰月之征','一生之盟','豹魂']
}
let jsonText1 = JSON.stringify(book,['title','author'])
console.log(jsonText1)
let jsonText2 = JSON.stringify(book,function(key,value){
switch(key){
case 'year':
return 2018
case 'author':
return '南大'
default:
return value
}
})
console.log(jsonText2)
// 主要传入有效的控制缩进的参数值,结果字符串就会包含换行符
let jsonText3 = JSON.stringify(book,null,4)
console.log(jsonText3)

toJSON()方法
let book1={
title:"九州缥缈录",
author:"江南",
year:2015,
chapter:['蛮荒','苍云古齿','天下名将','辰月之征','一生之盟','豹魂'],
toJSON:function(){
return {
title:this.title,
author:this.author
}
}
}
let jsonText4=JSON.stringify(book1,['title'],2)
console.log(jsonText4)

toJSON()可以作为函数过滤器的补充。假设把一个对象传入JSON.stringify(),序列化对象顺序如下:
- 如果存在toJSON()方法而且能通过它取得有效的值,则调用改方法,否则返回对象本身
- 如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是第1步返回的值
- 对第2步返回的每个值进行相应的序列化
- 如果提供了第三个参数,执行相应的格式化
JSON.parse()
let obj = JSON.parse(jsonText,function(key,value){
})
【红宝书】第20章.JSON的更多相关文章
- JS红宝书笔记——第一章 JavaScript简介
1.JavaScript简史 Netscape公司决定开发一种客户端语言用来处理浏览器端简单的表单验证. Netscape公司派布兰登·艾奇(BrendanEich)为计划于1995年2月发布的Net ...
- [转] VS2015中跑OpenGL红宝书第八版的第一章示例代码,运行
Ori Article Link OpenGL的东西快忘光了,把角落的第八版红宝书拿出来复习一下 从书中的地址下了个示例代码结果新系统(Win10+VS2015)各种跑不起来,懊恼之后在网上疯狂搜索资 ...
- 第5章 引用类型---JS红宝书书摘系列笔记
在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,描述的是一类对象所具有的属性和方法.而对象是某个特定引用类型的实例. 一.Object类型 可以通过Object构造函数创 ...
- VS2015中跑OpenGL红宝书第八版的示例代码
OpenGL的东西快忘光了,把角落的第八版红宝书拿出来复习一下 从书中的地址下了个示例代码结果新系统(Win10+VS2015)各种跑不起来,懊恼之后在网上疯狂搜索资料终于跑起来了,记录一下 一.环境 ...
- 【转载】关于在vs2013中配置opengl红宝书第八版环境
本文为转载 原文地址 http://blog.csdn.net/qq821869798/article/details/45247241 本人刚开始学习opengl,买了一本opengl红宝书第八版 ...
- 从今日起,我会把OpenGL红宝书上的例子用完整的代码形式写在我的博客中,
1.使用教程:OpenGL红宝书第8版 2.使用的库工具:GLEW和GLFW 3.使用的IDE:vs2012 4.说说目的:完整的看一遍OpenGL,加深印象并且熟练掌握运用OpenGL 5.欢迎有相 ...
- OpenGl编程指南第7版(红宝书)环境配制
环境 OS:win7 旗舰版SP1 64位 编译器: VS 2013 express 的cl 软件 glut. 在这个页面https://www.opengl.org/resources/librar ...
- 运行OpenGL红宝书第9版源码时Visual Studio提示“无法启动程序...ALL_BUILD。拒绝访问“的问题的解决办法
问题描述: OpenGL红宝书第9版源码采用CMake编译后,用相应的Visual Studio(如VS2012)打开“vermilion9.sln”解决方案,并运行时Visual Studio提示“ ...
- [OpenGL红宝书]第一章 OpenGL概述
第一章 OpenGL概述 标签(空格分隔): OpenGL 第一章 OpenGL概述 1 什么是OpenGL 2 初识OpenGL程序 3 OpenGL语法 4 OpenGL渲染管线 41 准备向Op ...
随机推荐
- vscode vue模版
{ "Print to console": { "prefix": "vue", "body": [ "< ...
- 【JavaEE】之MyBatis逆向工程的使用
MyBatis逆向工程可以方便的从数据库中将表自动映射到JAVA POJO类,并同时生成Mapper.xml和Mapper接口,方便实用.下面介绍一下逆向工程的使用方法. 使用逆向工程,我们最好是新建 ...
- Vsftp与PAM虚拟用户
使用yum 安装vsftp yum install vsftpd pam pam-* db4 db4-* 创建一个保存用户及密码的文件 cd /etc/vsftpd/ touch virtual_lo ...
- Error creating bean with name 'entityManagerFactory' defined in class path resource解决方案
项目是集成了Spring Boot和Spring Data,然后昨天简单Jpa和Spring Boot配置完成,开始进行公司项目的重构,然后出现了这个问题.当时是在网上找了好久.后来发现时java ...
- WPF 使用Win32API 让控件置于WebBrowser上方
WPF中Webbrowser控件使用HwndHost所以webbrowser会在所有控件的前方.所以webbrowser会覆盖所有同级的控件. 现在通过使用Win32API 可以避免这个情况. 最主要 ...
- List接口下的集合
集合框架 List接口下的集合特点: Set接口下的集合特点: 1.都是有序的 1.都是无序的 2.都有下标 2.没有下标 3.都可以重复 3.不可重复(覆盖) List接口下的集合 1.ArrayL ...
- 机器学习笔记(十)---- KNN(K Nearst Neighbor)
KNN是一种常见的监督学习算法,工作机制很好理解:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个"邻居"的信息来进行预测.总结一句话就是&quo ...
- AI:为你写诗,为你做不可能的事
最近,一档全程高能的神仙节目,高调地杀入了我们的视野: 没错,就是撒贝宁主持,董卿.康辉等央视名嘴作为评审嘉宾,同时集齐央视"三大名嘴"同台的央视<主持人大赛>,这够不 ...
- luogu P4302 [SCOI2003]字符串折叠
题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作S = S X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) = SSSS-S(X个S). 如果A = A', B = ...
- 浏览器主页锁定之战——IE:我太难了
精彩回顾: 我是一个explorer的线程 我是一个杀毒软件线程 我是一个IE浏览器线程 比特宇宙-TCP/IP的诞生 产品vs程序员:你知道www是怎么来的吗? Hello, World! 我是一个 ...