• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共299篇

    前端 - Javascript

关闭

返回栏目

关闭

返回前端 - Javascript栏目

82 - 内置对象 - JSON 对象 - JSON 数据的序列化与反序列化

作者:

贺及楼

成为作者

更新日期:2025-02-21 18:12:09

前端 - Javascript 《内置对象 - JSON 对象 - JSON 数据的序列化与反序列化》

在前端开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于 JavaScript 对象字面量语法,易于人阅读和编写,同时也易于机器解析和生成。JavaScript 提供了 JSON 对象,用于处理 JSON 数据的序列化与反序列化,这在前后端数据交互、数据存储等场景中发挥着重要作用。

1. JSON 简介

JSON 数据格式由键值对组成,使用大括号 {} 表示对象,方括号 [] 表示数组。键必须是字符串,值可以是字符串、数字、布尔值、null、对象或数组。以下是一个简单的 JSON 示例:

  1. {
  2. "name": "John",
  3. "age": 30,
  4. "isStudent": false,
  5. "hobbies": ["reading", "swimming"],
  6. "address": {
  7. "city": "New York",
  8. "zip": "10001"
  9. }
  10. }

2. JSON 对象的方法

2.1 JSON.stringify() - 序列化

JSON.stringify() 方法用于将 JavaScript 对象或值转换为 JSON 字符串,这个过程称为序列化。其语法如下:

  1. JSON.stringify(value[, replacer[, space]])
  • value:必需,要转换的 JavaScript 对象或值。
  • replacer:可选,可以是函数或数组,用于指定哪些属性要被序列化。
  • space:可选,用于指定缩进空格数,使输出的 JSON 字符串更易读。

示例 1:基本序列化

  1. const person = {
  2. name: "Alice",
  3. age: 25,
  4. isMarried: true
  5. };
  6. const jsonString = JSON.stringify(person);
  7. console.log(jsonString);
  8. // 输出: {"name":"Alice","age":25,"isMarried":true}

示例 2:使用 replacer 数组

  1. const person = {
  2. name: "Bob",
  3. age: 35,
  4. job: "Engineer",
  5. city: "Los Angeles"
  6. };
  7. const replacer = ["name", "job"];
  8. const jsonString = JSON.stringify(person, replacer);
  9. console.log(jsonString);
  10. // 输出: {"name":"Bob","job":"Engineer"}

示例 3:使用 space 参数

  1. const person = {
  2. name: "Charlie",
  3. age: 40
  4. };
  5. const jsonString = JSON.stringify(person, null, 2);
  6. console.log(jsonString);
  7. // 输出:
  8. // {
  9. // "name": "Charlie",
  10. // "age": 40
  11. // }

2.2 JSON.parse() - 反序列化

JSON.parse() 方法用于将 JSON 字符串转换为 JavaScript 对象,这个过程称为反序列化。其语法如下:

  1. JSON.parse(text[, reviver])
  • text:必需,要解析的 JSON 字符串。
  • reviver:可选,是一个函数,用于在返回之前对每个键值对进行处理。

示例 1:基本反序列化

  1. const jsonString = '{"name": "David", "age": 22}';
  2. const person = JSON.parse(jsonString);
  3. console.log(person.name);
  4. // 输出: David

示例 2:使用 reviver 函数

  1. const jsonString = '{"name": "Eve", "birthDate": "1990-01-01"}';
  2. const person = JSON.parse(jsonString, (key, value) => {
  3. if (key === "birthDate") {
  4. return new Date(value);
  5. }
  6. return value;
  7. });
  8. console.log(person.birthDate.getFullYear());
  9. // 输出: 1990

3. 注意事项

  • 序列化限制JSON.stringify() 不能序列化函数、undefinedSymbol 类型的值。如果对象的属性值是这些类型,该属性会被忽略。
  • JSON 格式要求JSON.parse() 只能解析符合 JSON 格式的字符串。例如,键必须用双引号括起来,否则会抛出 SyntaxError

4. 总结

方法 作用 语法
JSON.stringify() 将 JavaScript 对象或值转换为 JSON 字符串 JSON.stringify(value[, replacer[, space]])
JSON.parse() 将 JSON 字符串转换为 JavaScript 对象 JSON.parse(text[, reviver])

通过 JSON.stringify()JSON.parse() 方法,我们可以方便地在 JavaScript 对象和 JSON 字符串之间进行转换,实现数据的序列化与反序列化,从而在前端开发中更好地处理数据的传输和存储。无论是与后端进行数据交互,还是在本地存储数据,JSON 对象的这两个方法都能发挥重要作用。