你不知道的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中的Screen屏幕对象

    当我们在Web中使用JavaScript时,有一些内置对象可以帮助我们进行与页面相关的操作,其中就包括了Screen屏幕对象。本文将详细介绍JavaScript中的Screen对象,包括其常见属性和方法,并给出两个示例说明。 Screen对象概述 所谓Screen对象,指的是代表用户屏幕的对象,该对象包含了屏幕的基本信息,例如屏幕的宽度、高度、像素密度等,同…

    JavaScript 2023年6月11日
    00
  • 详解js中常规日期格式处理、月历渲染和倒计时函数

    下面将为您详细讲解js中常规日期格式处理、月历渲染和倒计时函数的完整攻略。 常规日期格式处理 在JavaScript中,我们可以使用Date对象对日期进行处理。常用的日期格式处理函数包括getFullYear()、getMonth()、getDate()、getDay()等。这些函数用于获取年、月、日、星期几等常用日期信息。比如,我们可以使用以下代码获取当前…

    JavaScript 2023年5月28日
    00
  • Javascript中实现String.startsWith和endsWith方法

    首先,需要明确的是,JavaScript中并没有内置的startsWith和endsWith方法,我们需要手动实现这两个方法。 实现startsWith方法 startsWith方法用于检查字符串是否以指定的子串开头。下面是一份实现这个方法的JavaScript代码: String.prototype.startsWith = function(startS…

    JavaScript 2023年5月19日
    00
  • nodejs中实现阻塞实例

    实现阻塞实例需要用到Node.js中的核心模块fs和util。其中,fs模块用于读取文件内容,util模块中的promisify方法用于将回调函数转化为返回Promise对象的函数。 下面是一个完整的实现阻塞实例的攻略,包含两条示例说明: 1. 读取文件并输出内容 1.1 创建文件 首先,需要创建一个文件example.txt,并向其中写入一些内容。 ech…

    JavaScript 2023年5月28日
    00
  • javascript异步编程

    下面我会来详细讲解“JavaScript 异步编程”的完整攻略,包括基本概念、异步编程方式、回调函数、Promise、async/await 等。 基础概念 在学习异步编程之前,我们需要了解以下几个基础概念: 同步代码 同步代码指的是按照代码的书写顺序,依次执行的代码,一行代码的执行需要等待上一行代码的执行完成。 console.log(‘start’); …

    JavaScript 2023年5月18日
    00
  • javascript中对Date类型的常用操作小结

    Javascript中对Date类型的常用操作小结 创建Date对象 在 Javascript 中创建 Date 对象的方式有以下几种: 使用 new Date() 构造函数创建一个当前时间的 Date 对象。 let currentDate = new Date(); 使用 new Date(value) 构造函数创建指定时间的 Date 对象,value…

    JavaScript 2023年5月27日
    00
  • JavaScript异常处理

    JavaScript异常处理可以帮助开发人员减少代码中的错误,提高代码的健壮性和稳定性。在 JavaScript 中,异常是由错误或异常条件引起的程序流控制中的偏差,也就是程序出了问题。 JavaScript异常处理通常使用 try-catch 语句块实现。try 语句块包含可能引发异常的代码,而 catch 语句块用于捕捉异常并处理它们。以下是一个基本的 …

    Web开发基础 2023年3月30日
    00
  • JavaScript中windows.open()、windows.close()方法详解

    JavaScript中window.open()、window.close()方法详解 简介 window.open() 和 window.close() 是 JavaScript 常用方法之一,可以用于在新窗口打开 URL,或关闭现有窗口。本文将详细讲解使用这两个方法的相关知识。 window.open()方法 定义 window.open() 方法被用于…

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