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

相关文章

  • 深入理解js generator数据类型

    深入理解JS Generator数据类型 什么是Generator? Generator是ES6引入的一种新的数据类型,它可以被认为是一种特殊的函数。Generator函数和普通函数的区别在于: Generator函数的执行结果是一个Iterator对象,而不是最终的返回值。 Generator函数可以通过yield语句来暂停或恢复函数的执行。 Genera…

    JavaScript 2023年5月27日
    00
  • JS将指定的某个字符全部转换为其他字符实例代码

    下面是完整的攻略,包含了示例代码和说明: 思路: 我们可以通过JS的字符串处理方法,将指定字符串中的某个字符全部替换为其他字符。具体而言,我们可以使用字符串的replace()函数实现替换功能,该函数接受两个参数,分别表示要替换的字符和用于替换的字符。 下面是基本的replace()函数语法: str.replace(searchValue, replace…

    JavaScript 2023年5月28日
    00
  • JS实现网页抢购功能(触发,终止脚本)

    JS实现网页抢购功能可以基于浏览器的自动化工具,如selenium或者puppeteer,完成批量请求或模拟用户行为。在实现过程中,需要明确以下几个步骤: 登录并保持会话:在许多电商网站中,进行抢购之前首先需要登录账户。可以通过模拟登录的方式,实现自动输入账号密码并完成登录。在登录完成之后,需要保持会话以便于提交订单等后续的操作。 找到目标商品页面:一般情况…

    JavaScript 2023年6月10日
    00
  • javascript 一些用法小结

    Javascript 一些用法小结 本篇文章是针对Javascript初学者的一些用法小结,讲解了Javascript中常用的一些语法、函数、对象等,方便读者快速学会Javascript。 语法 变量声明 Javascript中可以用var、let、const三个关键字进行变量声明。 var关键字声明的变量为函数级作用域变量,可以在函数内任意位置使用,而在函…

    JavaScript 2023年5月18日
    00
  • JavaScript中关于Object.create()的用法

    首先我们来讲一下Object.create()方法。它是JavaScript中一个非常重要的方法,用于创建一个新对象,同时可以将其原型指向另一个对象,也可以添加新的属性和方法。下面就来详细介绍一下Object.create()的用法: 基本语法 Object.create()方法的基本语法如下: Object.create(proto[, propertie…

    JavaScript 2023年5月27日
    00
  • javascript题目,重写函数让其无限相加

    当我们看到“重写函数让其无限相加”这个题目时,第一时间想到的就是递归。递归是指函数直接或间接地调用自身。使用递归可以很方便地实现一个无限相加的函数。 下面是一个实现步骤的完整攻略: 1. 定义函数 首先,我们需要定义一个函数,函数名为add,参数为无限个数字,返回值为一个函数。 function add() { let args = Array.protot…

    JavaScript 2023年6月11日
    00
  • JS日期加减,日期运算代码

    JS日期加减、日期运算代码的完整攻略,可以通过以下步骤来实现: 1. 创建日期对象 在JS中,可以通过 new Date() 来创建日期对象,例如: let cur_date = new Date(); 以上代码表示创建了一个当前时间的日期对象,该对象包含了当前年月日、时分秒的信息。 2. 日期加减操作 在JS中,可以通过 setDate()、setMont…

    JavaScript 2023年5月27日
    00
  • js 获取html5的data属性实现方法

    获取HTML5的data属性实现方法 在HTML5中的data属性可以以简单且可读性高的方式为元素添加数据,但是在JavaScript中获取这些属性的值并不像其他一些属性那样直观。下面介绍几种方法来获取HTML5的data属性。 1. 使用getAttribute() 我们可以使用DOM的 getAttribute() 方法来获取HTML5的data属性。示…

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