JSON常识
JSON的诞生原因是因为XML整合到HTML中各个浏览器实现的细节不尽相同,所以道格拉斯·克罗克福特(Douglas Crockford) 和 奇普·莫宁斯达(Chip Morningstar)一起从JS的数据类型中提取了一个子集,作为新的数据交换格式,因为主流的浏览器使用了通用的JavaScript引擎组件,所以在解析这种新数据格式时就不存在兼容性问题,于是他们将这种数据格式命名为 “JavaScript Object Notation”,缩写为 JSON,由此JSON便诞生了!
前人栽树,后人乘凉,以下为学习笔记
JSON简介
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。
它是基于 ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
JSON建构于两种结构:
- 键值对的无序集合 — 对象
也可以理解为纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表 — 数组
JSON语法
JSON 语法是 JavaScript 语法的子集。
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
//a.json
{
"a": "a",
"b": {
"c": "c",
"d": true,
"e": [
"a",
"b"
]
}
}
//index.js
var a = require('./a.json');
console.log('a',a);
var b = JSON.stringify(a); // 对象转换为 JSON (字符串)
console.log('b',b)
var c = JSON.parse(b) // JSON 转换为对象
console.log('c',c)
node执行结果
E:\test\0806-JSON>node index.js
a { a: 'a', b: { c: 'c', d: true, e: [ 'a', 'b' ] } }
b {"a":"a","b":{"c":"c","d":true,"e":["a","b"]}}
c { a: 'a', b: { c: 'c', d: true, e: [ 'a', 'b' ] } }
(通过browserify打包), 浏览器的打印结果:
注意:
规范的JSON格式下,键值对必须是都有双引号包裹,如:
"name": "a"
不带双引号或者带单引号的JSON是不符合规范的
name: "a" // Unexpected token n in JSON at position
"name": 'a' // Unexpected token ' in JSON at position