在前端开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于 JavaScript 对象字面量语法,易于人阅读和编写,同时也易于机器解析和生成。JavaScript 提供了 JSON 对象,用于处理 JSON 数据的序列化与反序列化,这在前后端数据交互、数据存储等场景中发挥着重要作用。
JSON 数据格式由键值对组成,使用大括号 {} 表示对象,方括号 [] 表示数组。键必须是字符串,值可以是字符串、数字、布尔值、null、对象或数组。以下是一个简单的 JSON 示例:
{"name": "John","age": 30,"isStudent": false,"hobbies": ["reading", "swimming"],"address": {"city": "New York","zip": "10001"}}
JSON.stringify() - 序列化JSON.stringify() 方法用于将 JavaScript 对象或值转换为 JSON 字符串,这个过程称为序列化。其语法如下:
JSON.stringify(value[, replacer[, space]])
value:必需,要转换的 JavaScript 对象或值。replacer:可选,可以是函数或数组,用于指定哪些属性要被序列化。space:可选,用于指定缩进空格数,使输出的 JSON 字符串更易读。
const person = {name: "Alice",age: 25,isMarried: true};const jsonString = JSON.stringify(person);console.log(jsonString);// 输出: {"name":"Alice","age":25,"isMarried":true}
replacer 数组
const person = {name: "Bob",age: 35,job: "Engineer",city: "Los Angeles"};const replacer = ["name", "job"];const jsonString = JSON.stringify(person, replacer);console.log(jsonString);// 输出: {"name":"Bob","job":"Engineer"}
space 参数
const person = {name: "Charlie",age: 40};const jsonString = JSON.stringify(person, null, 2);console.log(jsonString);// 输出:// {// "name": "Charlie",// "age": 40// }
JSON.parse() - 反序列化JSON.parse() 方法用于将 JSON 字符串转换为 JavaScript 对象,这个过程称为反序列化。其语法如下:
JSON.parse(text[, reviver])
text:必需,要解析的 JSON 字符串。reviver:可选,是一个函数,用于在返回之前对每个键值对进行处理。
const jsonString = '{"name": "David", "age": 22}';const person = JSON.parse(jsonString);console.log(person.name);// 输出: David
reviver 函数
const jsonString = '{"name": "Eve", "birthDate": "1990-01-01"}';const person = JSON.parse(jsonString, (key, value) => {if (key === "birthDate") {return new Date(value);}return value;});console.log(person.birthDate.getFullYear());// 输出: 1990
JSON.stringify() 不能序列化函数、undefined 和 Symbol 类型的值。如果对象的属性值是这些类型,该属性会被忽略。JSON.parse() 只能解析符合 JSON 格式的字符串。例如,键必须用双引号括起来,否则会抛出 SyntaxError。| 方法 | 作用 | 语法 |
|---|---|---|
JSON.stringify() |
将 JavaScript 对象或值转换为 JSON 字符串 | JSON.stringify(value[, replacer[, space]]) |
JSON.parse() |
将 JSON 字符串转换为 JavaScript 对象 | JSON.parse(text[, reviver]) |
通过 JSON.stringify() 和 JSON.parse() 方法,我们可以方便地在 JavaScript 对象和 JSON 字符串之间进行转换,实现数据的序列化与反序列化,从而在前端开发中更好地处理数据的传输和存储。无论是与后端进行数据交互,还是在本地存储数据,JSON 对象的这两个方法都能发挥重要作用。