20 JSON

作者: 闷油瓶小张 | 来源:发表于2016-09-08 20:54 被阅读31次

本章内容

  • 理解 JSON 语法
  • 解析 JSON
  • 序列化 JSON

关于 JSON,最重要的是要理解它是一种数据格式,不是一种编程语言。

20.1 语法

JSON 的语法可以表示以下三种类型的值。

  • 简单值:使用与 JavaScript 相同的语法,可以在 JSON 中表示字符串、数值、布尔值和null。但不支持特殊值undefined
  • 对象:对象作为一种复杂数据类型,表示的是一组有序的键值对儿。而每个键值对儿中的值可以是简单值,也可以是复杂数据类型的值。
  • 数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型--简单值、对象或数组。

20.1.1 简单值

最简单的 JSON 数据形式就是简单值。
JavaScript 字符串与 JSON 字符串的最大区别在于,JSON 字符串必须使用双引号(单引号回导致语法错误)。
在实际应用中,更多地用来表示更复杂的数据结构,而简单值只是整个数据结构中的一部分。

201.2 对象

JSON 中的对象要求给属性加引号。
与 JavaScript 的对象字面量相比,JSON 对象有两个地方不一样。首先,没有声明变量。其次,没有末尾的分号(因为不是 JavaScript 语句,所以不需要分号)。

201.3 数组

JSON 数组也没有变量和分号。把数组和对象结合起来,可以构成更复杂的数据集合。

20.2 解析与序列化

20.2.1 JSON 对象

早期的鸡西器基本上就是使用 JavaScript 的eval()函数。使用eval()对 JSON 数据结构求值存在风险,因为可能会执行一些恶意代码。
JSON 对象有两个方法:stringify()parse()。分别用于把JavaScript 对象序列化为 JSON 字符串和把 JSON 字符串解析为原生 JavaScript 值。

20.2.2 序列化选项

可以接受另外两个参数,这两个参数用于指定以不同的方式序列化 JavaScript 对象。第一个参数是个过滤器;第二个参数是一个选项,表示是否在 JSON 字符串中保留缩进。

var jsonText = JSON.stringify(book, ["title", "edition"]);
var jsonText = JSON.stringify(book, null, 4);
  1. 过滤结果
  2. 字符串缩进
  3. toJSON() 方法
    可以为任何对象添加toJSON() 方法。

把一个对象传入JSON.stringify()会优先调用toJSON()方法。

20.2.3 解析选项

JSON.parse()方法也可以接收另一个参数,该参数是一个函数,将在每个键值对儿上调用,这个函数被称为还原函数。

20.3 小结

JSON 是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量。

相关文章

网友评论

      本文标题:20 JSON

      本文链接:https://www.haomeiwen.com/subject/sdvdjttx.html