你可能不知道的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++智能指针的模拟实现实例 简介 在C++中,有一种叫做智能指针的类型,它的作用是自动管理指针资源,避免内存泄漏等问题。C++智能指针是C++11标准引入的一个新特性,包括了unique_ptr、shared_ptr、weak_ptr三种智能指针。本文将介绍C++智能指针的模拟实现方式,让各位读者了解智能指针的本质和实现方式,从而更好地应用智能指针。 un…

    C 2023年5月23日
    00
  • EIZO CS2731显示器评测 原来好显示器是这样的

    EIZO CS2731显示器评测:原来好显示器是这样的 一、引言 EIZO CS2731是一款高级的色彩管理显示器,它使用了WideGamut LED面板,能提供高达99%的Adobe RGB色彩覆盖率,以及100%sRGB色彩覆盖率。这款显示器的宽屏比例和解析度,以及内置的色彩校准器和LUT表,使其尤为适合专业的照片编辑、视频编辑和图形设计人员使用。接下来…

    C 2023年5月22日
    00
  • C++ 如何将string转换成全小写

    将string转换成全小写的方法可以使用C++标准库中的algorithm头文件中的transform函数来实现。具体实现流程如下: 包含头文件<algorithm>和<string>。 定义一个string类型的字符串源字符串。 定义一个string类型的字符串目标字符串。 使用transform()函数转换目标字符串。 cpp s…

    C 2023年5月23日
    00
  • C++ 系统IO流介绍

    C++系统IO流介绍 介绍 在C++中,IO流是一组用于处理输入和输出的标准库组件。 C++标准库提供了多种IO流,包括文件流、字符串流和标准输入/输出流等。 IO流类型 输入流和输出流 在C++中,IO流分为输入流和输出流。输入流用于读取数据,输出流用于输出数据。输入和输出都是相对于程序来说的,即程序可以将数据写入输出流,另一个程序或用户可以读取该数据。 …

    C 2023年5月23日
    00
  • C语言编程时常犯十八个错误小结

    以下是详细讲解“C语言编程时常犯十八个错误小结”的完整攻略: 一、背景介绍 C语言是一门广泛使用的编程语言,但它也有很多容易犯的错误。这些错误不仅会导致程序的崩溃,还会影响到程序的运行效率。为了帮助C语言入门者避免这些错误,本文会对常见的18个错误进行分析和总结,供大家参考。 二、常见错误及解决方法 1. 数组越界 如果使用一个不存在的数组下标来访问数组中的…

    C 2023年5月23日
    00
  • c++获取sqlite3数据库表中所有字段的方法小结

    获取SQLite3数据库表中所有字段的方法,可以通过查询系统表信息来获取。具体方法如下: 使用C++代码获取SQLite3数据库表中所有字段的方法小结 1. 打开数据库 要操作SQLite3数据库,首先需要打开它。可以使用sqlite3_open()函数打开数据库,示例代码如下: sqlite3 *db; int rc = sqlite3_open(&quo…

    C 2023年5月22日
    00
  • C语言解数独程序的源码

    让我们来详细讲解一下“C语言解数独程序的源码”的完整攻略。 什么是数独? 在介绍程序之前,我们先来了解一下数独。 数独是一种智力游戏,由9×9的方格组成,分成9个3×3的小方格,在已知数的基础上填上未知的数字,使得每一行、每一列和每一个小方格内的数字均为1~9,且不重复。数独不但能训练大脑的逻辑、思维能力,还能减轻压力、增加乐趣。 源码分析 下面,我们来分析…

    C 2023年5月23日
    00
  • 基于C语言实现的迷宫游戏代码

    基于C语言实现的迷宫游戏代码攻略 1. 程序介绍 本程序是基于C语言实现的迷宫游戏,通过命令行界面进行操作。玩家需要通过键盘操作,控制角色在迷宫中找到出口,并避开障碍物。 2. 程序设计 2.1 数据结构 程序需要用到以下数据结构: 迷宫地图:二维数组,用于存储迷宫地图中的信息,如墙、障碍物、出口等。 角色位置:定义一个结构体,用于存储角色的位置信息,包括坐…

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