JSON 的全称是 JavaScript Object Notation,也就是 JavaScript 对象表示法。

JSON 是一个轻量级的数据交换格式,它既易于我们编写和阅读,也易于机器解析和生成。JSON 的作用与 XML 类似,是用来存储和交换文本信息的语法,但是它比 XML 更小、更快,也更易于被解析。

JSON 语法是 JavaScript 对象语法的子集,JSON 由键值对(对象)和值的有序列表(数组)组成,这些都是通用的数据结构,所以大多数编程语言都支持 JSON。

JSON 的键必须由双引号包含,这是强制的,使用单引号就会报错。

JSON 的值允许的数据有 6 类:字符串,数值,布尔值(Boolean),null,对象,数组。

JSON 的字符串值必须由双引号包含,数组或对象最后一个成员后面不能添加逗号,如果添加了也会报错。

举个例子:

{"url": "http://www.w3clog.com", "author": "枯叶"}

是不是和 JavaScript 中对象的语法一样的呢,所以使用 JavaScript 很容易操作 JSON 数据。

再来个包含所有类型值的例子:

{
    "string": "I am string",
    "number": 66,
    "isEasy": true,
    "isBoring": false,
    "nothing": null,
    "obj": {
        "name": "hojas",
        "age": 24
    },
    "array": [1, 2, 3, 4]
}

那么 JavaScript 要如何解析 JSON 呢?

在 ECMAScript 5.1 (也就是第五版的 JavaScript)中,增加了一个 window.JSON 全局对象,用于解析和转换 JSON。JSON 对象主要有两个方法,分别是 JSON.parse() 和 JSON.stringify()。

JSON.parse() 用于把 JSON 字符串转换为 JavaScript 对象,如:

var jsonStr = '{"key":"value"}';

var obj = JSON.parse(jsonStr);

console.log(obj); // Object {key: "value"}

而 JSON.stringify() 的作用与 JSON.parse() 相反,用于把 JavaScript 值转换为 JSON 字符串,如:

var obj = {
    name: "Jack",
    girlFriend: "Rose"
};

var jsonStr = JSON.stringify(obj);

console.log(jsonStr); // '{"name":"Jack","girlFriend":"Rose"}'