JSON 对象

JSON 对象仅包含两个方法, stringify 方法将对象转成 JSON 格式的字符串, parse 方法将 JSON 格式的字符串解析成对象。

$$tip JSON 格式虽然和对象很相似,但它们不是一个东西。 JSON 格式是表达数据的一种格式,对象是一种数据类型。 $$

$$tip JSON 格式通常用于保存数据,或者传输数据。 $$

JSON 格式

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

JSON 是使用字符串表示数据结构的一种规范标准, 已经被很多语言所采用,用来作为数据传输或保存的规范。像前后端交互中, RESTful API 的交互标准就是基于 JSON 格式的。

$$tip

使用统一的标准可以使得不同语言开发的程序能进行数据交互,在 JSON 之前流行的是使用 XML 格式, 但 JSON 出现后随之简单易懂和轻量的原因逐渐取代了 XML 成为最流行的格式。

$$

$$tip JSON 格式是一种格式、规范,它使用字符串来表达。所以任何数据转成 JSON 格式后都是字符串类型。 $$

stringify

stringify 被称为序列化,可以将值转成 JSON 格式字符串。

$$tip

序列化指的是将值转成可以存储或传输的数据形式的过程。

$$

let person = {
    name: "鸣人",
    age: 20,
}
let result = JSON.stringify(person)
alert(typeof result) // string,序列化后数据为字符串类型

$$tip

序列化与转成字符串( toString )是两个概念,序列化是为了能够方便地存储或传输数据,最终数据还能够被反序列化成内存中的值使用。因此序列化与反序列化必须遵守一套严格的规则。

而转成字符串( toString )大部分的场景是为了展示给用户看,并且不要求能再转回数据。

$$

$$jsdemo$$
$$edit$$
alert(JSON.stringify(123)) // 123

alert(JSON.stringify([1, 2, 3])) // [1,2,3]

alert(
    JSON.stringify({
        name: "鸣人",
        age: 18,
    })
) // {"name":"鸣人","age":18}

$$tip

有关序列化的规则请看 stringify 描述 - MDN

$$

parse

parse 被称为反序列化,可以将 JSON 格式字符串转成内存中的值。

$$jsdemo$$
$$edit$$
let str = '{"name":"鸣人","age":18}'

let person = JSON.parse(str)

console.log(typeof person) // object
console.log(person) // {name: '鸣人', age: 18}

实战:保存数据的表格

实战项目成绩管理表 , 数据能实时保存在浏览器中,使用到了本章 JSON 对象的知识点与 Storage 章节知识点。