你可能不知道的JSON.stringify()详解

你可能不知道的JSON.stringify()详解

简介

JSON.stringify() 是 JavaScript 内置的一个可将对象转换为 JSON 字符串的方法。它将对象序列化为一个字符串,以便于存储或传输。JSON.stringify() 还可以接受一个函数作为第二个参数,用于控制转换过程。

JSON.stringify() 的参数

JSON.stringify() 接受两个参数:

JSON.stringify(value[, replacer[, space]])
  • value: 要序列化的值(对象,数组等)。
  • replacer: 用于控制转换过程的函数或数组。
  • space: 控制格式化的字符串或数值,用于缩进格式。

默认行为

当序列化一个对象时,默认情况下,JSON.stringify() 将会忽略对象中的 undefined 值,以及所有函数,因为 JSON 格式并不支持这些类型。

如果对象中有一个值是 NaN,则在序列化时会被转换为 null。如果对象中有一个值是 Infinity-Infinity,则在序列化时会被转换为 null

replacer 参数

replacer 参数可以是一个函数或一个数组,用于控制序列化的过程。

replacer 为函数

如果 replacer 是一个函数,则该函数将被调用,并传入两个参数:键和值。函数可以返回一个用于替换原始值的新值,也可以返回 undefined,表示删除值。

示例:

const person = {
  name: "Tom",
  age: 20,
  address: {
    city: "Beijing",
    street: "Wangfujing"
  }
};

function replacer(key, value) {
  if (key === "street") {
    return undefined;
  }
  return value;
}

const str = JSON.stringify(person, replacer);
console.log(str); // {"name":"Tom","age":20,"address":{"city":"Beijing"}}

在上面的示例中,我们将对象中的 street 字段删除了。

replacer 为数组

如果 replacer 是一个数组,则该数组应该是一个键列表,仅包含要序列化的属性。

示例:

const person = {
  name: "Tom",
  age: 20,
  address: {
    city: "Beijing",
    street: "Wangfujing"
  }
};

const str = JSON.stringify(person, ["name", "address"]);
console.log(str); // {"name":"Tom","address":{"city":"Beijing","street":"Wangfujing"}}

在上面的示例中,我们只序列化了 nameaddress 字段。

space 参数

space 参数用于控制 JSON 字符串的格式化,它可以是一个字符串或一个数值,在字符串情况下,字符串将被用作缩进,每次缩进一个字符串(通常是空格)的副本。在数字情况下,将使用对应数量的空格进行格式化。

示例:

const person = {
  name: "Tom",
  age: 20,
  address: {
    city: "Beijing",
    street: "Wangfujing"
  }
};

const str = JSON.stringify(person, null, 2);
console.log(str);
// {
//   "name": "Tom",
//   "age": 20,
//   "address": {
//     "city": "Beijing",
//     "street": "Wangfujing"
//   }
// }

const str2 = JSON.stringify(person, null, "\t");
console.log(str2);
// {
//     "name": "Tom",
//     "age": 20,
//     "address": {
//         "city": "Beijing",
//         "street": "Wangfujing"
//     }
// }

在上面的示例中,我们使用了空格和 tab 进行格式化。

结论

JSON.stringify() 是一个非常有用的方法,可以用于将对象序列化为字符串,以便于存储或传输。通过使用 replacer 和 space 参数,我们可以更好地控制序列化过程的细节,以生成满足要求的 JSON 字符串。

参考资料

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:你可能不知道的JSON.stringify()详解 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • c++类成员函数如何做函数参数

    关于c++类成员函数如何做函数参数,具体可以按照以下步骤来进行操作: 1. 类成员函数定义 首先需要定义一个使用类成员函数作为参数的函数,该函数需要按照以下格式进行定义: void function_name(class_name& obj, return_type (class_name::*function_name)(function_para…

    C 2023年5月23日
    00
  • C语言实现航班管理系统

    C语言实现航班管理系统 简介 航班管理系统是一个能够记录航班信息并对其进行管理的软件程序。它可以记录航班的基本信息,如航班号、起飞地、目的地、起飞时间、到达时间、机型等,并提供相应的查询、修改、删除等功能。在本篇文章中,我们将使用C语言创建一个简单的航班管理系统。 步骤 步骤1: 创建一个结构体来保存航班信息 首先,我们需要创建一个结构体来存储航班信息。每一…

    C 2023年5月22日
    00
  • json对象转字符串如何实现

    首先,需要明确一下,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web应用程序之间的数据交换。JSON对象是一种由“键/值”对组成的数据结构,可以通过一些库函数将其转化为字符串形式。 下面是JSON对象转字符串的方法: 1.使用JSON.stringify()方法 JSON.stringify()是将…

    C 2023年5月23日
    00
  • C语言实现简单的三子棋游戏源码

    下面是“ C语言实现简单的三子棋游戏源码”的完整攻略: 一、三子棋游戏规则 三子棋又叫井字棋游戏,是一款传统的二人对弈类游戏。双方玩家交替将自己的棋子放置在 3×3 的棋盘格子上,先连成一条线(直线、横线、斜线)的为胜者。 二、游戏实现思路 1. 程序结构 本游戏程序的基本框架由以下几个部分构成: /* * 三子棋游戏 * main函数 * 初始化棋盘 * …

    C 2023年5月23日
    00
  • 如何取消.net后台线程的执行

    如何取消.NET后台线程的执行 在开发.NET中常常需要使用后台线程实现任务的异步执行。但是有时候需要在任务执行期间取消线程的执行,以下是.NET中取消后台线程的方法。 CancellationTokenSource CancellationTokenSource可以用来取消线程执行,在需要取消执行的时候调用CancellationTokenSource.C…

    C 2023年5月23日
    00
  • 常用排序算法的C语言版实现示例整理

    最近我整理了一篇关于常用排序算法的C语言版实现示例的攻略,让大家可以更好地掌握这些算法的原理和实现方法。以下是该攻略的详细讲解。 1. 简介 本攻略主要介绍了常用排序算法的C语言版实现示例。常用的排序算法包括:冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序、归并排序、计数排序、桶排序和基数排序等。在C语言中,可以使用数组实现排序算法。 2. 排序算…

    C 2023年5月22日
    00
  • 适合新手小白DEV C++的使用方法

    下面将为您详细讲解“适合新手小白DEV C++的使用方法”的完整攻略。 简介 DEV C++是一款免费、开源的C/C++ IDE,适用于初学者和中级开发人员开发C/C++应用程序。它具有易于使用、功能强大、跨平台等特点。本篇攻略将详细讲解如何使用DEV C++进行C/C++程序的编写、调试、编译和运行。 下载与安装 首先,你需要在官网上下载和安装DEV C+…

    C 2023年5月22日
    00
  • C语言中循环语句练习实例

    下面我将详细讲解如何练习C语言中的循环语句。 什么是循环语句 在 C 语言中, 循环语句分为 for、while、do..while 三种类型。循环语句可以让程序多次执行同一段代码,简化程序逻辑。 循环语句的语法 for 循环语句语法 for (初始化表达式; 条件表达式; 更新表达式) { // 循环体语句 } 其中,初始化表达式只在循环开始时执行一次,条…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部