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(),序列化对象顺序如下:

  1. 如果存在toJSON()方法而且能通过它取得有效的值,则调用改方法,否则返回对象本身
  2. 如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是第1步返回的值
  3. 对第2步返回的每个值进行相应的序列化
  4. 如果提供了第三个参数,执行相应的格式化

JSON.parse()

let obj = JSON.parse(jsonText,function(key,value){

})

【红宝书】第20章.JSON的更多相关文章

  1. JS红宝书笔记——第一章 JavaScript简介

    1.JavaScript简史 Netscape公司决定开发一种客户端语言用来处理浏览器端简单的表单验证. Netscape公司派布兰登·艾奇(BrendanEich)为计划于1995年2月发布的Net ...

  2. [转] VS2015中跑OpenGL红宝书第八版的第一章示例代码,运行

    Ori Article Link OpenGL的东西快忘光了,把角落的第八版红宝书拿出来复习一下 从书中的地址下了个示例代码结果新系统(Win10+VS2015)各种跑不起来,懊恼之后在网上疯狂搜索资 ...

  3. 第5章 引用类型---JS红宝书书摘系列笔记

    在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,描述的是一类对象所具有的属性和方法.而对象是某个特定引用类型的实例. 一.Object类型 可以通过Object构造函数创 ...

  4. VS2015中跑OpenGL红宝书第八版的示例代码

    OpenGL的东西快忘光了,把角落的第八版红宝书拿出来复习一下 从书中的地址下了个示例代码结果新系统(Win10+VS2015)各种跑不起来,懊恼之后在网上疯狂搜索资料终于跑起来了,记录一下 一.环境 ...

  5. 【转载】关于在vs2013中配置opengl红宝书第八版环境

     本文为转载 原文地址 http://blog.csdn.net/qq821869798/article/details/45247241 本人刚开始学习opengl,买了一本opengl红宝书第八版 ...

  6. 从今日起,我会把OpenGL红宝书上的例子用完整的代码形式写在我的博客中,

    1.使用教程:OpenGL红宝书第8版 2.使用的库工具:GLEW和GLFW 3.使用的IDE:vs2012 4.说说目的:完整的看一遍OpenGL,加深印象并且熟练掌握运用OpenGL 5.欢迎有相 ...

  7. OpenGl编程指南第7版(红宝书)环境配制

    环境 OS:win7 旗舰版SP1 64位 编译器: VS 2013 express 的cl 软件 glut. 在这个页面https://www.opengl.org/resources/librar ...

  8. 运行OpenGL红宝书第9版源码时Visual Studio提示“无法启动程序...ALL_BUILD。拒绝访问“的问题的解决办法

    问题描述: OpenGL红宝书第9版源码采用CMake编译后,用相应的Visual Studio(如VS2012)打开“vermilion9.sln”解决方案,并运行时Visual Studio提示“ ...

  9. [OpenGL红宝书]第一章 OpenGL概述

    第一章 OpenGL概述 标签(空格分隔): OpenGL 第一章 OpenGL概述 1 什么是OpenGL 2 初识OpenGL程序 3 OpenGL语法 4 OpenGL渲染管线 41 准备向Op ...

随机推荐

  1. 插入节点(appendChild())

    appendChild():方法将给元素节点追加一个子节点: reference = element.appendChild(newChild); 如上所示,给定节点newChild将成为给定元素节点 ...

  2. 【开发工具 - MySQL】之不能插入中文的问题

    新安装的MySQL数据库,在安装的时候设置了字体为UTF8,但在使用insert语句插入中文的时候还是会报错. 具体解决方法:在MySQL控制台中输入以下设置代码: SET character_set ...

  3. Netty学习——Netty和Protobuf的整合(二)

    Netty学习——Netty和Protobuf的整合(二) 这程序是有瑕疵的,解码器那里不通用,耦合性太强,有两个很明显的问题,但是要怎么解决呢?如:再加一个内部类型 Person2,之前的代码就不能 ...

  4. shell一键部署nginx+tomcat

    1.首先拉取环境  tomcat需要用到jdk环境 提前准备好nginx源码包,放于指定目录下 vim test.sh #!/bin/bash yum -y install gcc gcc-c++ z ...

  5. Thinkphp5.1 导入第三方包的问题

    一般刚接触tp5.1的,会很不适应,虽然版本号只是比5.0多了0.1,但是差别挺大,废弃了不少方法,官方的教程又很简单,很多东西没说全,在此鄙视一下框架作者,最起码体谅一下小白嘛,搞了好多天才把5.1 ...

  6. java之扩展运算符

    java中的扩展运算符为+=.-=./=.%=.*= 当使用扩展运算符时,变量在参与赋值运算时会把结果自动强制转换为当前变量的类型,比如: public class Test{ public stat ...

  7. HTML5学习第二天!

    学习了一天,然后整理内容到现在,感觉昨天的学习效率有点差,哎! 感受尽在代码中,布局真的脑壳疼,仅仅只整理了CSS中的list: <!DOCTYPE html> <html> ...

  8. 各种常用js函数实现

    1.bind function bind(fn, context) {    var args = Array.prototype.slice.call(arguments, 2);    retur ...

  9. 网络安全之Windows基础

    1.黑客常用DOS命令 基础: telnet服务:telnet 192.168.1.141 (默认没有打开telnet服务) 常用: color a ping -t -l 65550 ip 死亡之pi ...

  10. 【Flutter】372- Flutter移动端实战手册

    ☝点击上方蓝字,关注我们! 本文字数:3705字 预计阅读时间:28分钟 导 读 Flutter又双叒叕来了!本周推送是我们Flutter系列文章的最终篇!<Flutter移动端实战手册> ...