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

yizhihongxing

当我们需要将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日

相关文章

  • JS 正则表达式用法介绍

    JS 正则表达式用法介绍 什么是正则表达式 正则表达式是一种用来匹配文本和字符串的模式。JavaScript中的正则表达式被包含在RegExp对象中,可以用来进行字符串匹配、替换、查找等操作。 正则表达式语法 在JavaScript中,正则表达式的语法被写在两个斜杠之间,例如:/pattern/flags。其中,“pattern”是表示模式字符串的正则表达式…

    JavaScript 2023年6月10日
    00
  • JavaScript类型转换方法大全

    JavaScript类型转换是指将一个数据类型的值转换成另一种数据类型的值。在JavaScript中,类型转换是非常重要的,因为它能够帮助我们将不同的数据类型进行比较、运算和合并。 JavaScript中主要的类型转换有以下几种: 1. 字符串转换 可以通过toString()方法将一个非字符串类型的值转换为字符串类型。 let num = 42; let …

    Web开发基础 2023年3月30日
    00
  • JSON与JS对象的区别与对比

    JSON和JavaScript对象都是在Web应用程序中处理数据的重要方式。虽然它们看上去很相似,但它们有着不同的特性和适用场景。下面是关于JSON与JS对象的区别与对比的详细说明。 什么是JS对象? JS对象是一种数据类型。它是所有JS基本类型之一,可以通过定义一个变量并使用构造函数Object()来创建对象。例如: var person = new Ob…

    JavaScript 2023年5月27日
    00
  • JavaScript 模块化编程(笔记)

    JavaScript 模块化编程(笔记) JavaScript 模块化编程是现代 JavaScript 开发中一种流行的方式。它通过把复杂的代码分成多个集中化独立的小模块,使代码更易于维护和适应不断变化的需求。 模块化编程基本概念 导入 import: 在一个模块中,用 import 语句引入其他模块的代码。 导出 export: 在一个模块中,用 expo…

    JavaScript 2023年6月10日
    00
  • 一个JavaScript函数把URL参数解析成Json对象

    要把URL参数解析成Json对象,可以使用JavaScript的内置方法URLSearchParams,该方法可用于解析URL查询字符串中的参数。具体步骤如下。 步骤一:获取URL参数字符串 使用window.location.search获取URL的查询字符串,然后去除开头的问号“?”,得到纯参数字符串。 const searchParams = wind…

    JavaScript 2023年5月27日
    00
  • js使用Array.prototype.sort()对数组对象排序的方法

    下面是“js使用Array.prototype.sort()对数组对象排序的方法”的详细攻略: 1. Array.prototype.sort()方法介绍 Array.prototype.sort() 方法用于对数组进行排序。默认情况下按照字符串的 Unicode 码点进行排序。 语法 array.sort([compareFunction]) 参数说明: …

    JavaScript 2023年5月27日
    00
  • 前端面试知识点锦集(JavaScript篇)

    下面我将详细讲解“前端面试知识点锦集(JavaScript篇)”的完整攻略。 本文概述 在本篇文章中,我们将总结并详细讲解一些前端面试中常见的JavaScript知识点,包括数据类型、变量、作用域、闭包、原型链、异步编程等等。这些知识点在前端开发中非常重要,也是面试中经常会问到的内容。 JavaScript数据类型 JavaScript有七种数据类型,分别是…

    JavaScript 2023年5月18日
    00
  • JavaScript初级教程(第二课)第2/7页

    下面是JavaScript初级教程(第二课)第2/7页的完整攻略: 标题 JavaScript初级教程(第二课)第2/7页 正文 理解JavaScript中的数据类型 JavaScript中的数据类型包括基本数据类型和引用数据类型。基本数据类型有数字,字符串,布尔值,null,undefined。引用数据类型有对象和数组。 数组的定义和访问 JavaScri…

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