JS JSON.stringify()的5个使用场景详解

当我们需要将JavaScript对象序列化为JSON格式时,使用JS的JSON.stringify()方法可以非常方便地实现。这个方法的5个使用场景如下:

1. 简单地将JavaScript对象转换为JSON字符串

使用JSON.stringify()方法最简单的场景就是将JavaScript对象转换为JSON格式的字符串。例如:

const person = {
  name: 'Alice',
  age: 25,
  address: {
    city: 'Shanghai',
    country: 'China'
  }
};
const jsonStr = JSON.stringify(person);
console.log(jsonStr);
// 输出:{"name":"Alice","age":25,"address":{"city":"Shanghai","country":"China"}}

2. 使用replacer函数过滤序列化结果

JSON.stringify()方法接受一个可选的replacer参数,它允许我们在序列化对象时过滤一些属性。可以传入一个函数,该函数接受两个参数:键和值,我们可以根据自己的需要决定是否将其保留。例如:

const person = {
  name: 'Alice',
  age: 25,
  address: {
    city: 'Shanghai',
    country: 'China'
  }
};
const jsonStr = JSON.stringify(person, (key, value) => {
  if (key === 'address') {
    // 只保留地址的城市信息
    return value.city;
  }
  return value;
});
console.log(jsonStr);
// 输出:{"name":"Alice","age":25,"address":"Shanghai"}

3. 使用replacer参数转换日期对象

将日期对象转换为JSON格式的字符串是很常见的需求,但是默认情况下JSON.stringify()将日期对象转换为ISO日期字符串格式的文本。我们可以通过传递一个replacer函数来自定义日期对象的序列化方式,例如:

const person = {
  name: 'Alice',
  birthdate: new Date('1995-03-19')
};
const jsonStr = JSON.stringify(person, (key, value) => {
  if (value instanceof Date) {
    // 将日期对象序列化为ISO字符串格式
    return value.toISOString();
  }
  return value;
});
console.log(jsonStr);
// 输出:{"name":"Alice","birthdate":"1995-03-19T00:00:00.000Z"}

4. 使用空格格式化JSON字符串

在开发过程中,我们希望在调试时可以更方便查看JSON格式的数据。JSON.stringify()方法可以通过传递第三个参数控制序列化的空格格式,例如:

const person = {
  name: 'Alice',
  age: 25,
  address: {
    city: 'Shanghai',
    country: 'China'
  }
};
const jsonStr = JSON.stringify(person, null, 2);
console.log(jsonStr);
// 输出:
// {
//   "name": "Alice",
//   "age": 25,
//   "address": {
//     "city": "Shanghai",
//     "country": "China"
//   }
// }

5. 序列化循环引用的对象

如果我们的数据模型存在循环引用的情况,使用JSON.stringify()方法将导致堆栈溢出,因为默认情况下该方法无法序列化循环引用的对象。但是可以通过传递第二个参数replacer来自定义序列化的方式,例如:

const person = {
  name: 'Alice'
};
const friend = {
  name: 'Bob',
  friends: [person]
};
person.friends = [friend]; // 循环引用
const jsonStr = JSON.stringify(friend, (key, value) => {
  if (key === 'friends') {
    // 只保留朋友的名字,忽略循环引用的对象
    return value.map(friend => friend.name);
  }
  return value;
});
console.log(jsonStr);
// 输出:{"name":"Bob","friends":["Alice"]}

上述5个场景覆盖了使用JSON.stringify()方法的绝大多数情况,使用起来非常灵活,可以满足我们在开发中的不同需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS JSON.stringify()的5个使用场景详解 - Python技术站

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

相关文章

  • Json Web Token在前后端实践思考分析

    Json Web Token在前后端实践思考分析 什么是Json Web Token(JWT) JSON Web Token(JWT)是一种用于在两个实体之间安全传输消息的开放标准(RFC 7519)。JWT以JSON格式编码数据,可以安全地存储在URL参数、POST参数、HTTP标头或Cookie中。JWT包括三个部分:头部,载荷和签名,最终生成的JWT字…

    JavaScript 2023年5月27日
    00
  • 新手入门js闭包学习过程解析

    新手入门JS闭包学习过程解析 JS闭包是JS中一个非常重要且常见的概念,但它的概念对于初学者来说可能会比较难理解和掌握。本文将详细讲解新手如何入门JS闭包,并提供相关示例进行说明。 什么是JS闭包 JS闭包(Closure)是指有权访问另一个函数作用域中变量的函数,即在函数内部创建一个可以访问外部变量的作用域。它是指那些能够访问自由变量的函数,即使在这些函数…

    JavaScript 2023年6月10日
    00
  • javascript:void(0)的含义及用法实例

    当我们在网页中点击一个按钮或链接时,为了防止页面刷新或跳转,常常会在href属性中使用“javascript:void(0)”这个值。那么这个值的含义以及用法实例是什么呢?接下来我们详细讲解。 含义 在javascript中,void是一个运算符,用于返回undefined。因此,使用“javascript:void(0)”就是将当前链接的默认行为赋值为“什…

    JavaScript 2023年5月28日
    00
  • 详解前端安全之JavaScript防http劫持与XSS

    首先,需要明确的是前端安全是一个非常重要的主题。在网络环境日趋复杂的今天,安全问题已经不再是一个简单的概念,而是涉及到许多方面,包括网络攻击、数据泄露、信息窃取等。因此,在开发网站时,需要重视前端安全,采取相应的措施,以保障网站和用户的安全。 其中一项非常重要的前端安全技术就是防止http劫持和XSS攻击。http劫持指的是黑客通过某些手段,劫持用户的请求,…

    JavaScript 2023年6月10日
    00
  • JavaScript 中的作用域与闭包

    作用域 (Scope) 是 JavaScript 代码中的一个重要概念。它定义了变量和函数的可见度以及使用的方式。在 JavaScript 代码中,有着局部作用域和全局作用域。使用作用域可以让代码更加封闭和安全,同时也增加了代码的可读性。 一、作用域的概念 全局作用域: 全局作用域是指在 JavaScript 代码中所有的地方都能访问到的变量、函数和对象; …

    JavaScript 2023年5月28日
    00
  • JavaScript中两个字符串的匹配

    JavaScript中两个字符串的匹配,通常可以使用字符串的match()方法、search()方法和正则表达式来实现。 使用match()方法进行字符串匹配 字符串的match()方法可以将一个正则表达式与一个字符串进行匹配,并返回匹配结果。其语法如下: string.match(regexp); 其中,regexp可以是一个字符串或者正则表达式对象。下面…

    JavaScript 2023年5月28日
    00
  • laydate.js日期时间选择插件

    “laydate.js日期时间选择插件”是一个常用的JavaScript插件,它可以方便地帮助用户在网页上进行日期和时间的选择。 以下是关于怎样在网页上使用”laydate.js日期时间选择插件”的详细攻略: 安装 在使用”laydate.js日期时间选择插件”之前,需要先将它安装到网页中。有两种方式可以安装该插件: 通过CDN引入。使用该方式只需引入以下代…

    JavaScript 2023年5月27日
    00
  • mpvue实现小程序签到金币掉落动画(api实现)

    下面是关于“mpvue实现小程序签到金币掉落动画(api实现)”的完整攻略,包括过程和示例说明: 1. 背景 在小程序中,签到是一个常见的功能。为了增加用户的积极性和体验,可以在签到的过程中实现金币掉落动画,让用户感到非常的有趣和奖励性。而mpvue是一个基于Vue.js的小程序开发框架,可以帮助我们更加便捷地开发小程序。因此,本文将介绍如何通过mpvue框…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部