JSON
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation);
- JSON 是轻量级的文本数据交换格式;
- JSON 独立于语言:JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言;
- JSON 具有自我描述性,更易理解。
1.2 不同点
- JSON 是纯文本
- JSON 具有“自我描述性”(人类可读)
- JSON 具有层级结构(值中存在值)
- JSON 可通过 JavaScript 进行解析
- JSON 数据可使用 AJAX 进行传输
冗余度:XML 比 JSON 冗余,因此对我们来说编写 JSON 会更快。
- 没有结束标签
- 更短
- 读写的速度更快
- 能够使用内建的 JavaScript eval() 方法进行解析
- 使用数组
- 不使用保留字
数组用法:XML 被用来描述结构化数据,不包含数组;而 JSON 包含数组。
解析:可以使用 JavaScript 的 eval 方法解析 JSON。当针对 JSON 应用这个方法时,eval 返回描述的对象。
2. JSON 语法规则 JSON 语法是 JavaScript 语法的子集。在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。
- 对象表示为键值对
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。JSON 格式支持以下数据类型:
数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。
类型 | 描述 |
---|---|
数字型(Number) | JavaScript 中的双精度浮点型格式 |
字符串型(String) | 双引号包裹的 Unicode 字符和反斜杠转义字符 |
布尔型(Boolean) | true 或 false |
数组(Array) | 有序的值序列 |
值(Value) | 可以是字符串,数字,true 或 false,null 等等 |
对象(Object) | 无序的键:值对集合 |
空格(Whitespace) | 可用于任意符号对之间 |
null | 空 |
- 它是一个无序的名/值对集合。
- 对象使用大括号闭合,以 '{' 开始,以 '}' 结尾。
- 每个名称后面都跟随一个 ':'(冒号),名/值对使用 ,(逗号)分割。
- 键名必须是字符串,并且不能同名。
- 当键名是任意字符串时应该使用对象。
- 它是一个有序的值集合。
- 使用方括号闭合,这意味着数组以 [ 开始,以 ] 结尾。
- 值使用 ,(逗号)分割。
- 数组索引可以以 0 或 1 开始。
- 当键名是连续的整数时应该使用数组。
- JavaScript 中的双精度浮点型格式,取决于实现。
- 不能使用八进制和十六进制格式。
- 在数字中不能使用 NaN 和 Infinity。
类型 | 描述 |
---|---|
整形(Integer) | 数字1-9,0和正负数 |
分数(Fraction) | 分数,比如 .3,.9 |
指数(Exponent) | 指数,比如 e,e+,e-,E,E+,E- |
- 零个或多个双引号包裹的 Unicode 字符以及反斜杠转义序列。
- 字符就是只有一个字符的字符串,长度为 1。
类型 | 描述 |
---|---|
" | 双引号 |
\ | 反斜线 |
/ | 斜线 |
b | 退格符 |
f | 换页符 |
n | 换行符 |
r | 回车符 |
t | 水平制表符 |
u | 四位十六进制数字 |
它包含 true 和 false 两个值。2.6 空格
可以在任意一对符号之间插入。可以添加用来让代码更可读。2.7 null
意味着空类型。2.3 JSON 文件
- JSON 文件的文件类型是 ".json"
- JSON 文本的 MIME 类型是 "application/json"
- 名/值对集合: 这一数据结构由不同的编程语言支持。
- 有序的值列表: 包括数组,列表,向量或序列等等
JSON 模式:
- 描述现有数据格式。
- 干净的人类和机器可读的文档。
- 完整的结构验证,有利于自动化测试。
- 完整的结构验证,可用于验证客户端提交的数据。
目前有好几个验证器可用于不同的编程语言。但是目前最完整和兼容 JSON 模式的验证器是 JSV。
语言 | 程序库 |
---|---|
C | WJElement (LGPLv3) |
Java | json-schema-validator (LGPLv3) |
.NET | Json.NET (MIT) |
ActionScript 3 | Frigga (MIT) |
Haskell | aeson-schema (MIT) |
Python | Jsonschema |
Ruby | autoparse (ASL 2.0); ruby-jsonschema (MIT) |
PHP | php-json-schema (MIT). json-schema (Berkeley) |
JavaScript | Orderly (BSD); JSV; json-schema; Matic (MIT); Dojo; Persevere (modified BSD or AFL 2.0); schema.js. |
{
"book": [
{
"id":"01",
"language": "Java",
"edition": "third",
"author": "Herbert Schildt"
},
{
"id":"07",
"language": "C++",
"edition": "second"
"author": "E.Balagurusamy"
}]
}
【JSON】理解上述程序之后我们来看另外一个例子,让我们把下面的代码保存为 json.htm:
JSON example - 锐客网
参考并感谢
- JSON 快速指南
2.JSON 教程
推荐阅读
- 事件代理
- 数组常用方法一
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法
- JavaScript|JavaScript之DOM增删改查(重点)
- 【读书笔记】JavaScript|【读书笔记】JavaScript DOM编程艺术 (第2版)
- JavaScript判断数组的方法总结与推荐
- javascript|javascript 性能测试笔记