你不知道的5个JavaScript中JSON的秘密功能分享

yizhihongxing

你不知道的5个JavaScript中JSON的秘密功能分享

1. JSON 对象的 stringify() 方法

定义

我们知道,JavaScript 中的 JSON 对象有一个 stringify() 方法,它的作用是将一个 JavaScript 对象转换成对应的 JSON 字符串。

用法

const obj = { name: 'Lucas', age: 28, hobbies: ['reading', 'coding'] };
const jsonStr = JSON.stringify(obj);
console.log(jsonStr);
// 输出: {"name":"Lucas","age":28,"hobbies":["reading","coding"]}

示例说明

在与后端交互时,常常会需要将一个 JavaScript 对象转换为 JSON 字符串然后发送到服务器。这时,我们可以用 JSON.stringify() 方法来快速地完成这个转换操作,获得符合我们需要的字符串。

2. JSON 对象的 parse() 方法

定义

JSON.parse() 方法用于将符合 JSON 格式的字符串转化为 JavaScript 对象或值。

用法

const jsonStr = '{"name":"Lucas","age":28,"hobbies":["reading","coding"]}';
const obj = JSON.parse(jsonStr);
console.log(obj);
// 输出: {name: 'Lucas', age: 28, hobbies: ['reading', 'coding']}

示例说明

在与后端交互时,常常会需要将一个符合 JSON 格式的字符串解析为 JavaScript 对象。这时,我们可以用JSON.parse() 方法来实现这个过程,在服务端接收到前端发送来的 JSON 字符串时,通过 parse() 方法解析就可以得到对应的 JavaScript 对象,从而进行操作。

3. JSON 的复杂解析

定义

JSON.parse() 方法不仅支持基本的对象和数组类型,还可以解析包括自定义类型的复杂结构。

用法

const Json = '{"name":"Lucas","age":28,"mapper":[{"name":"Amy","age":25},{"name":"Ben","age":30}]}';
let mapper = JSON.parse(Json, (key, value) => {
  if (key === 'age') {
    return value * 2;
  }
  return value;
});
console.log(mapper);
// 输出:{name: 'Lucas', age: 56, mapper: [{name: 'Amy', age: 50}, {name: 'Ben', age: 60}]}

示例说明

JSON.parse() 方法在第二个参数上添加一个函数,这个函数接收两个参数:键值(key)和值(value)。它提供了一种基于上下文动态处理 JSON 数据的方式。在上面的示例中,当这个回调函数的 key 的值为 age 时,就将 value 这个数值乘以 2 后再返回原始数据类型。

4. toJSON() 方法

定义

toJSON() 方法是 JSON 对象中一个内置方法,每个 JavaScript 对象都可以通过实现 toJSON() 方法来自定义它们的 JSON 序列化输出。当一个 JavaScript 对象被 Stringify() 方法序列化时,如果它有toJSON() 方法,则该方法会代替对象本身。

用法

const obj = {
  a: 2,
  b: 4,
  c: 'Hello World!',
  toJSON: function() {
    return this.a + this.b;
  }
};
console.log(JSON.stringify(obj));
// 输出:6

示例说明

如上述代码所示,我们给 obj 对象添加了自定义的 toJSON() 方法,它将对象中的 a 和 b 两个属性相加并返回,这样在调用 JSON.stringify() 函数时,obj 对象的序列化结果正是这个值(即 6),而不是原始的对象本身。

5. JSON 中 NaN,Infinity 以及 -Infinity 解析

定义

NaN(非数字)、正无穷和负无穷是 JavaScript 中的一些特殊情况,在 JSON 中,NaN、Infinity 和 -Infinity 都是不被允许的,如果 JSON.parse() 方法在解析 JSON 字符串时遇到这些特殊值,会抛出异常。

用法

const jsonStr1 = '{"result": NaN}';
const jsonStr2 = '{"result": Infinity}';
const jsonStr3 = '{"result": -Infinity}';
try {
  const result1 = JSON.parse(jsonStr1);
  console.log(typeof result1.result); // 输出:number
} catch (e) {
  console.log('parse error: ' + e);
}
try {
  const result2 = JSON.parse(jsonStr2);
  console.log(typeof result2.result); // 输出:number
} catch (e) {
  console.log('parse error: ' + e);
}
try {
  const result3 = JSON.parse(jsonStr3);
  console.log(typeof result3.result); // 输出:number
} catch (e) {
  console.log('parse error: ' + e);
}

示例说明

上述代码中,我们尝试使用 JSON.parse() 方法解析 JSON 字符串 result 中的不同值。当 result 值为NaN、Infinity 还是 -Infinity 时,JSON.parse() 方法抛出异常。而即便代码中没有任何异常,result 的类型依然是 number 类型。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:你不知道的5个JavaScript中JSON的秘密功能分享 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js数组去重常见的方法汇总(7种)

    下面我将详细讲解“js数组去重常见的方法汇总(7种)”。 一、引言 在JavaScript的实际开发中,经常会遇到需要对数组进行去重操作的情况。而JavaScript提供了多种方法来进行数组去重操作,下面将详细介绍七种常见的方法。 二、使用Set Set是ES6新引入的一种集合数据类型,它可以存储任意类型的唯一值。使用Set可以很方便地实现数组去重,只需要将…

    JavaScript 2023年5月27日
    00
  • setTimeout函数的神奇使用

    当需要在指定时间之后执行代码时,可以使用JavaScript中的setTimeout函数。setTimeout函数允许您指定一个回调函数以及在多少毫秒后调用该回调函数。在本文中,我将讲解setTimeout函数的使用和一些神奇的方法。 setTimeout函数的语法 setTimeout函数的基本语法如下: setTimeout(function, mill…

    JavaScript 2023年6月11日
    00
  • javascript编程必备_JS语法字典第1/2页

    下面就来详细讲解 “javascript编程必备_JS语法字典第1/2页”的完整攻略。 什么是“javascript编程必备_JS语法字典第1/2页”? “javascript编程必备_JS语法字典第1/2页”是一份javascript语法字典,作者整理了javascript编程中常用的语法,并且按照字母顺序排列,方便开发者进行查询和复习。本字典共分为两页,…

    JavaScript 2023年5月18日
    00
  • js预载入和JavaScript Image()对象使用介绍

    让我详细给您讲解“js预载入和JavaScript Image()对象使用介绍”的完整攻略。 什么是js预载入 当一个web页面中有大量的图片、音频等素材需要加载时,页面加载速度会明显减慢,给用户带来不好的体验。而js预载入能够做到在页面需要使用某个资源的时候提前加载资源,这样能够极大的提升用户页面加载体验。如何实现呢?下面我来介绍一下实现的具体步骤: 首先…

    JavaScript 2023年5月27日
    00
  • javascript生成/解析dom的CDATA类型的字段的代码

    要生成/解析包含CDATA类型的字段,我们需要使用Javascript中的 DOM 操作。下面是生成CDATA类型字段的完整攻略: 生成CDATA类型字段的代码 步骤1:创建一个包含CDATA类型字段的元素 我们可以使用 Document.createElement() 方法创建一个新的元素,然后使用 Document.createCDATASection(…

    JavaScript 2023年6月10日
    00
  • 详解JavaScript时间处理之几个月前或几个月后的指定日期

    详解JavaScript时间处理之几个月前或几个月后的指定日期 在 JavaScript 中,我们常常需要对日期进行计算和处理,在实际业务开发中经常会遇到需要计算几个月前或几个月后的日期的需求。本篇文章将详细介绍怎样在 JavaScript 中实现这个功能。 1. 思路分析 为了计算 X 个月前或 X 个月后的日期,我们可以先将指定日期转换为时间戳,然后进行…

    JavaScript 2023年5月27日
    00
  • 浅谈JS日期(Date)处理函数

    浅谈JS日期(Date)处理函数 在JavaScript中,日期(Date)处理是相当重要的一种数据类型。在我们的代码开发工作中,通常需要使用日期处理函数对日期进行操作。接下来我们将详细介绍JavaScript中日期处理函数的使用方法。 日期的基本操作 在JavaScript中,日期的基本操作包括创建日期对象、获取日期时间信息以及日期的格式化输出等。 创建日…

    JavaScript 2023年5月27日
    00
  • Javascript之高级数组API的使用实例

    Javascript之高级数组API的使用实例 在javascript中,数组是一种非常常用的数据结构。通过数组API的使用,可以使我们更加方便地操作和处理数据。除了常规的数组操作方法外,Javascript也提供了很多高级数组API,本篇文章将为大家介绍这些高级数组方法的使用实例。 1. map方法 map() 方法对数组的每个元素进行一次函数调用,并将其…

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