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

你不知道的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日

相关文章

  • JavaScript中的值类型详细介绍

    JavaScript中的值类型,又称为基本数据类型,共有六种:数字(Number)、字符串(String)、布尔值(Boolean)、空(Null)、未定义(Undefined)和符号(Symbol)。在本文中,我们将详细介绍每种类型的特点和用法。 数字(Number) 数字类型代表着数值,包括整数和浮点数。JavaScript使用的是双精度浮点数格式,即N…

    JavaScript 2023年5月28日
    00
  • javascript如何写热点图

    下面就让我来详细讲解一下如何使用JavaScript编写热点图。 什么是热点图? 热点图是一种数据可视化的方式,通常用于展示空间范围内的数据分布状况。热点图的色彩深浅表示数据的密集程度,通常颜色较深的区域表示数据相对较密集的区域。 实现方式 实现热点图的方式有很多种,其中基于JavaScript的实现方式相对简单易用,下面介绍两种常用的JavaScript实…

    JavaScript 2023年6月10日
    00
  • javascript动态分页的实现方法实例

    对于”javascript动态分页的实现方法实例”,实现的步骤和示例说明如下: 1. 实现方法 1.1. 前端实现 首先,需要在页面中添加分页控制按钮,如:首页、上一页、下一页和尾页等。 绑定按钮点击事件,点击按钮后触发相应的分页事件。 在JavaScript中编写分页事件,实现分页功能。当用户点击分页按钮时,会将不同的页码传递到JavaScript函数中。…

    JavaScript 2023年5月27日
    00
  • js中的鼠标事件有哪些(用法示例学习进阶)

    JS中的鼠标事件是指在浏览器中用户和鼠标交互时,所触发的事件。在前端开发中,这些鼠标事件被广泛应用于各种网站和应用程序中。下面将介绍一些常用的鼠标事件以及它们的用法示例。 鼠标单击事件(click) 鼠标单击事件(click)是指在鼠标左键单击时所触发的事件。在页面中使用最为广泛的是按钮的单击事件。下面是一个示例,当按钮被单击时,将弹出一个提示框。 <…

    JavaScript 2023年6月11日
    00
  • 如何使用IOS自动化测试工具UIAutomation

    如何使用IOS自动化测试工具UIAutomation攻略 简介 UIAutomation是苹果官方提供的测试工具,可以进行IOS应用的自动化测试。它可以在模拟器或真机上运行,可以创建脚本来模拟用户在应用程序上的操作,然后对这些操作的结果进行验证。 UIAutomation依赖于Javascript语言,并且提供了一些函数来访问IOS应用的UI元素,例如滚动、…

    JavaScript 2023年5月28日
    00
  • javascript小技巧 超强推荐第1/5页

    接下来我将为你详细讲解“javascript小技巧 超强推荐第1/5页”的完整攻略。 简介 这篇攻略讲的是 JavaScript 中的一些小技巧,旨在帮助开发者更加高效地编写代码。本攻略共分为5个部分,本篇讲解第1/5页的内容。 数组合并 在 JavaScript 中,我们常常需要将两个或多个数组合并成一个新数组。常规的方法是使用循环或者concat()函数…

    JavaScript 2023年5月18日
    00
  • js数组的五种迭代方法及两种归并方法(推荐)

    下面是关于“js数组的五种迭代方法及两种归并方法”的详细讲解: 1. 前言 在JavaScript中,数组是一种非常常见的数据类型。对于数组的操作,我们既可以使用循环遍历,也可以使用数组提供的方法进行处理。本文主要介绍 js 数组的五种迭代方法及两种归并方法。这些方法要熟练掌握,能够帮助我们高效地处理数组。 2. 迭代方法 2.1 forEach forEa…

    JavaScript 2023年5月27日
    00
  • Java设计模式之观察者模式_动力节点Java学院整理

    Java设计模式之观察者模式 1. 什么是观察者模式 观察者模式是一种行为型设计模式,它允许一个或多个对象在状态发生改变时自动通知其他对象。 在观察者模式中,存在两种角色: Subject(目标):负责发布通知的角色,可以添加,删除观察者,并通知观察者状态的变化。 Observer(观察者):当被观察的对象的状态发生变化时,它会自动接收到通知并进行相应的处理…

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