JSON入门

140 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路


1. 什么是 JSON

JavaScript 对象表示法(JavaScript Object Notation) JSON 是存储和交换文本信息的语法。


2. JSON 语法规则

2.1) 简单值

可以在 JSON 中使用字符串,数值,布尔值和 NULL,语法与 JavaScript 中相同。

但是在 JSON 中,不可以使用 NaN,Infinity,undefined。 其中字符串必须使用双引号表示,数值必须十进制表示。

2.2) 对象

无序的键-值集合

// 对象的属性名必须是字符串,所以要用双引号括起来。
{
	"title" : "对象",
	"value" : 100     //最后一个地方不要有逗号
}

2.3) 数组

有序的值集合 数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 NULL)。

["tea", "coffee", "milk"] //最后一个地方不要有逗号

[
	{
		"title" : "对象",
		"value" : 100
	},
	{
		"name" : "coffe",
		"value" : 99
	}
]

3. 字符串和对象相互转换

3.1)JSON.parse()

我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。

JSON 不能存储 Date 对象。 如果你需要存储 Date 对象,需要将其转换为字符串。 之后再将字符串转换为 Date 对象。

语法:

// text:必需, 一个有效的 JSON 字符串。
// reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

JSON.parse(text[, reviver])

举个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JSON入门</title>
</head>
<body>
    <script>
        let str = '{"first": "tea", "second": "coffee", "third": "milk"}';
        console.log(str);
        let obj = JSON.parse(str);
        console.log(obj);
    </script>
</body>
</html>

效果如下: 在这里插入图片描述

3.2) JSON.stringify()

我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。

JSON 不能存储 Date 对象。 JSON.stringify() 会将所有日期转换为字符串。 之后再将字符串转换为 Date 对象。

语法:

// value:必需, 要转换的 JavaScript 值(通常为对象或数组)。
// replacer:可选,用于转换结果的函数或数组。
/*
	如果 replacer 为函数,则 JSON.stringify() 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
	如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。
*/


// space:可选,文本添加缩进、空格和换行符。
/*
	如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。
*/
	
JSON.stringify(value[, replacer[, space]])

举个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JSON入门</title>
</head>
<body>
    <script>
        let obj = {"first": "tea", "second": "coffee", "third": "milk"};
        console.log(obj);
        let str = JSON.stringify(obj);
        console.log(str);
    </script>
</body>
</html>

效果如下: 在这里插入图片描述