JSON(JavaScript Object Notation)JavaScript对象表示法。JSON是JavaScript的一个严格的子集,利用了JavaScript中的一些模式来表示结构化数据。关于JSON,最重要的是理解它是一种数据格式,不是一种编程语言。虽然具有相同的语法形式,但JSON并不从属于JavaScript。而且,并不是只用JavaScript才使用JSON,很多语言都有对JSON的解析器和序列化器。JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。

语法

简单值

最简单的JSON形式就是简单值。

这是JSON表示数值5的形式,类似表示字符串:

JavaScript与JSON表示字符串的最大区别在于,JSON字符串必须使用双引号。

对象

JavaScript的对象字面量:

在JSON中的对象要给属性加引号,实际上JavaScript的对象字面量完全可以写成如下形式:

JSON表示上述对象:

区别:(1)没有声明变量(JSON中没有变量的概念)(2)没有末尾的分号(因为这不是JavaScript语句,所以不需要分号),JSON中的对象的属性名任何时候都必须加上双引号。

数组

JSON中的第二种复杂数据类型是数组,JSON中数组采用的就是JavaScript中的数组字面量形式。例如:
JavaScript中数组字面量

JSON

同样要注意,JSON数组也没有变量和分号。也可以把数组和对象结合起来,托福网络课程通过嵌套的方式可以构成更复杂的数据集合。对象和数组通常是JSON中的最外层形式。

解析与序列化

JSON之所以流行是因为可以把JSON数据结构解析为有用的JavaScript对象。与XML数据结构要解析成DOM文档而且从中提取数据极为麻烦相比,JSON可以解析为JavaScript对象的优势极其明显。

JSON对象

早期的JSON解析器基本上就是使用JavaScript的eval()函数(eval() 函数可计算某个字符串,并执行其中的的 JavaScript
代码。)。由于JSON是JavaScript语法的子集,因此eval()函数可以解析、新加坡留学解释并返回JavaScript对象和数组。

JSON对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生的JavaScript值。例如:

默认情况下,JSON.stringify()输出的JSON字符串不包含任何空格字符或者缩进。

虽然book与bookcopy具有相同的属性,但它们是两个独立的、没有任何联系的对象。

序列化选项

JSON.stringify()还可以接受另外两个参数。第一个参数是过滤器,可以是一个数组,也可以是一个函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进。

toJSON()方法

有时候,JSON.stringify()方法还是不能满足对某些对象进行自定义序列化的需求,可以给对象定义toJSON()方法,返回其自身的JSON数据格式。

解析选项

JSON.parse()方法也可以接受参数,该参数是一个函数,将在每个键值对上调用:

JSON是一个轻量级的数据格式,可以简化表示复杂的数据结构的工作量。原生的JSON对象也得到了很多浏览器的支持,,比如IE8+,Firefox3.5+,Chrome等。

JavaScript高级程序设计读书笔记之JSON的更多相关文章

  1. javascript高级程序设计读书笔记-事件(一)

    读书笔记,写的很乱   事件处理程序   事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别  没有DOM1 同样的事件 DOM0会顶掉html事件   因为他们都是属性  而 ...

  2. JavaScript高级程序设计 读书笔记

    第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...

  3. javascript高级程序设计读书笔记

    第2章  在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...

  4. Javascript高级程序设计读书笔记(第六章)

    第6章  面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...

  5. JavaScript高级程序设计-读书笔记(7)

    第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...

  6. JavaScript高级程序设计-读书笔记(6)

    第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JS ...

  7. JavaScript高级程序设计 读书笔记 第一章

    JavaScript是一种专门为与网页交互而设计的脚本语言 JavaScript实现 ECMAscript---核心 DOM---文档对象模型 BOM---浏览器对象模型

  8. Javascript高级程序设计读书笔记(第二章)

    第二章  在HTML中使用Javascript 2.1<script>元素 延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到 ...

  9. JavaScript高级程序设计-读书笔记(5)

    第13章 事件 1.事件流 事件流描述的是从页面中接收事件的顺序.IE的事件流是事件冒泡流,而Netscape Communicator的事件流是事件捕获流. (1)事件冒泡,即事件开始时由最具体的元 ...

随机推荐

  1. Linkerd 金丝雀部署与 A/B 测试

    本指南向您展示如何使用 Linkerd 和 Flagger 来自动化金丝雀部署与 A/B 测试. 前提条件 Flagger 需要 Kubernetes 集群 v1.16 或更新版本和 Linkerd ...

  2. 字符串匹配算法(二)-BM算法详解

    我们在字符串匹配算法(一)学习了BF算法和RK算法,那有没更加高效的字符串匹配算法呢.我们今天就来聊一聊BM算法. BM算法 我们把模式串和主串的匹配过程,可以看做是固定主串,然后模式串不断在往后滑动 ...

  3. Echarts +ajax+JSONPObject 实现后台数据图表化

    显示效果 实现步骤: 1-引入e-char,jquery资源, 2-发起jsonp跨域请求, 3-服务器端返回return new JSONPObject(callback, value);数据 4- ...

  4. 01.泛型Generic

    1. 基本了解 1.1 什么是泛型? 字面意思:不确定的类型 泛型常用:泛型方法,泛型类,泛型接口,泛型委托 1.2 泛型 T(熟悉) T 的作用,其实就是一个通用的容器,制造它的人开始不指定它是用来 ...

  5. 云平台制作(1)-OPC Client取数模块的制作

    近来由于工程需要,基于OPC DA 2.0搭建通用的取数模块,与远程webscoket服务端连接,并传输数据.在网上找了些资料,修改相应网友公开的源代码,基本达到要求,特供大家参考. 1.实体类 us ...

  6. 修改Eureka的metadata脚本

    最近研究了一下Spring Cloud的灰度发布, 发现方法真是多. 这里先提供一个修改Eureka注册中心里的instance实例的metadata的脚本, 可以方便地用来测试效果. 使用举例: s ...

  7. DVWA靶场练习-Command Injection命令注入

    Command Injection 原理 攻击者通过构造恶意参数,破坏命令的语句结构,从而达到执行恶意命令的目的.

  8. Java数组07——稀疏数组

    稀疏数组 总结: 记录有效的坐标: 记录原始做表的大小和有效值的个数 记录每一个有效值的坐标 ,变成一个新的数组 age:  package array; ​ public class ArrayDe ...

  9. 基于 Clusternet 与 OCM 打造新一代开放的多集群管理平台

    背景 随着 5G.物联网设备的爆炸性增长以及智能终端不断增强的计算能力,带来了前所未有的数据量,传统的中心集中式计算捉襟见肘."新基建"战略的实施,工业互联网.车联网/自动驾驶.智 ...

  10. 在Ant脚本中使用时间戳

    时间戳在项目自动构建中广泛使用,例如在jar文件的manifest文件中,以及最后zip包的文件名里等,时间戳对应的Ant命令是,这个标签既可以用在一个内部,也可以放在外部用作"全局&quo ...