浅谈JSON.parse()和JSON.stringify()

浅谈JSON.parse()和JSON.stringify()

JSON.parse()和JSON.stringify()是JavaScript中常用的JSON数据解析和生成方法,它们可以让我们轻松地将JavaScript的对象或数组转换为JSON格式,或者将JSON格式的数据转换为JavaScript的对象或数组。本文将从以下几个方面进行详细讲解:

  1. JSON.parse()的用法及示例
  2. JSON.stringify()的用法及示例
  3. JSON.parse()和JSON.stringify()的相互转换

1. JSON.parse()的用法及示例

JSON.parse()方法可以将JSON格式的字符串转换为JavaScript对象或数组。其语法如下:

JSON.parse(text, reviver)

其中,text参数是要解析的JSON格式的字符串,reviver参数是一个可选的函数,用来在解析这个JSON字符串的同时对它进行转换或过滤操作。如果不需要进行额外的操作,则可以将该参数设为null。下面是一个示例:

let jsonStr = '{"name":"张三","age":18,"gender":"男","hobbies":["游泳","跑步","阅读"]}';
let jsonObj = JSON.parse(jsonStr);
console.log(jsonObj.name);    // 输出 "张三"
console.log(jsonObj.age);     // 输出 18
console.log(jsonObj.hobbies); // 输出 ["游泳","跑步","阅读"]

在上面的示例中,我们将一个JSON格式的字符串转换为了JavaScript对象,并可以通过对象的属性来访问其中的数据。

此外,如果我们需要解析的JSON格式字符串比较大,也可以使用JSON.parse()方法中提供的第二个参数,即reviver函数,来对解析后的对象或数组进行过滤或转换操作。比如下面这个示例:

let jsonStr2 = '{"name":"张三","age":18,"gender":"男","hobbies":["游泳","跑步","阅读"],"birthday":"1990-01-01"}';

let dateReviver = function(key, value) {
  if (key === "birthday") {
    return new Date(value);
  } else {
    return value;
  }
};

let jsonObj2 = JSON.parse(jsonStr2, dateReviver);
console.log(jsonObj2.birthday.getFullYear()); // 输出 1990

在上面的示例中,我们定义了一个dateReviver函数,它接受两个参数key和value,用来处理JSON字符串中的每一项。当key的值为"birthday"时,我们将value值转换为一个Date对象,并返回;否则返回原始的value值。这样,我们就可以通过对象的属性来访问这个Date对象的年份。

2. JSON.stringify()的用法及示例

JSON.stringify()方法可以将JavaScript对象或数组转换为JSON格式的字符串。其语法如下:

JSON.stringify(value[, replacer[, space]])

其中,value参数是要转换的JavaScript对象或数组;replacer参数是一个可选的参数,用来控制数据转换的过程;space参数是一个可选参数,用来指定生成的JSON格式字符串的间距。默认情况下,JSON.stringify()生成的字符串是没有间距的。下面是一个示例:

let person = {
  name: "张三",
  age: 18,
  gender: "男",
  hobbies: ["游泳", "跑步", "阅读"]
};

let jsonStr = JSON.stringify(person);
console.log(jsonStr); // 输出 {"name":"张三","age":18,"gender":"男","hobbies":["游泳","跑步","阅读"]}

在上面的示例中,我们将一个JavaScript对象转换为了JSON格式的字符串,并且可以通过console.log()方法进行输出。

此外,JSON.stringify()方法还提供了一个replacer参数,它可以作为过滤或变换函数,来控制数据转换的过程。比如下面这个示例:

let person2 = {
  name: "李四",
  age: 20,
  gender: "男",
  hobbies: ["游泳", "跑步", "阅读"],
  birthday: new Date(1999, 1, 1)
};

let dateReplacer = function(key, value) {
  if (key === "birthday") {
    return value.getFullYear() + "-" + (value.getMonth() + 1) + "-" + value.getDate();
  } else {
    return value;
  }
};

let jsonStr2 = JSON.stringify(person2, dateReplacer);
console.log(jsonStr2);
// 输出 {"name":"李四","age":20,"gender":"男","hobbies":["游泳","跑步","阅读"],"birthday":"1999-2-1"}

在上面的示例中,我们定义了一个dateReplacer函数,用来格式化birthday属性的值。对于其他属性的值,我们则不做任何处理,直接返回原始值。这样,我们就可以生成JSON格式的字符串,并且在其中的birthday属性的值是经过格式化后的。

3. JSON.parse()和JSON.stringify()的相互转换

JSON.parse()和JSON.stringify()可以互相转换。即,我们可以通过JSON.stringify()方法来生成JSON格式的字符串,然后再通过JSON.parse()方法来将其转换为JavaScript对象或数组。下面是一个示例:

let person3 = {
  name: "王五",
  age: 22,
  gender: "男",
  hobbies: ["游泳", "跑步", "阅读"],
  birthday: new Date(1999, 3, 1)
};

let jsonStr3 = JSON.stringify(person3);
let newObj = JSON.parse(jsonStr3);

console.log(newObj.name);          // 输出 "王五"
console.log(newObj.age);           // 输出 22
console.log(newObj.hobbies[1]);    // 输出 "跑步"
console.log(newObj.birthday.getFullYear());  // 输出 1999

在上面的示例中,我们首先通过JSON.stringify()方法将一个JavaScript对象转换为了JSON格式的字符串,然后通过JSON.parse()方法将其转换为了一个新的JavaScript对象。可以看到,我们在新的对象中可以访问原始对象中的所有属性和值。

结语

以上就是JSON.parse()和JSON.stringify()的详细讲解和示例。希望本文可以帮助大家更好地理解和掌握这两个方法的用法和特性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈JSON.parse()和JSON.stringify() - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言如何在指针中隐藏数据详解

    一、什么是C语言指针的隐藏数据 在C语言中,指针可以用来访问变量在内存中的地址。一般情况下,我们使用指针来直接访问、修改该变量的值。但是,指针本身也是一个变量,也可以被赋值,并被存储到内存中。因此,我们可以通过将数据(例如,一个结构体)存储到指针中来隐藏数据。 二、如何在指针中隐藏数据 我们可以使用结构体类型和typedef定义指针类型,以便在指针中保存结构…

    C 2023年5月22日
    00
  • C++一个函数如何调用其他.cpp文件中的函数

    要调用其他.cpp文件中的函数,可以使用头文件和函数声明。下面是具体的步骤: 创建一个头文件,命名为xxx.h,将要调用的函数的声明放在该文件中,如下所示: // xxx.h #include <iostream> using namespace std; void func1(); int func2(int num); 将定义函数的.cpp文…

    C 2023年5月23日
    00
  • C++操作MySQL大量数据插入效率低下的解决方法

    下面是详细讲解“C++操作MySQL大量数据插入效率低下的解决方法”的完整攻略。 问题背景 当使用C++程序操作MySQL数据库时,可能会遇到插入大量数据的情况,例如插入100万行数据。如果使用简单的插入操作,效率非常低下,而且可能会导致程序崩溃或内存溢出。因此,需要一种高效的插入方式来解决这个问题。 解决方法 一种有效的解决方法是使用MySQL的批量插入功…

    C 2023年5月22日
    00
  • Win10更新失败报错怎么办 win10更新报错“0xc0000005”解决方法

    下面是详细讲解关于”Win10更新失败报错”的攻略。 Win10更新失败报错 在Windows操作系统的更新过程中,有些用户在下载或者安装更新时会面临着更新失败的问题,即”Win10更新失败报错”问题。这些问题大多数时候由软件冲突、系统设置、应用程序的错误等等因素引起。当Windows失去不必要的间隔时间以来,某些文件可能已经损坏,或者客户机安装的软件和应用…

    C 2023年5月23日
    00
  • vue和react中关于插槽详解

    当我们在使用Vue或React构建组件时,经常会遇到需要给组件传递内容的情况。比如一个弹出框,需要在内容区域中传递不同的文本、表单或者其他组件作为content。这时候,我们可以使用插槽的概念来进行解决。 概述 插槽(Slot)是Vue和React中组件通信的一种技术,它允许我们在一个组件的模板中预留一定的位置,然后在使用该组件的父组件中,使用自定义的内容来…

    C 2023年5月23日
    00
  • Win11系统遇到BSOD错误代码0xc0000001怎么办 附图文修复教程

    当 Win11 系统遇到 BSOD 错误代码 0xc0000001 的时候,这意味着操作系统自举的过程中发生了错误。这种错误可能是由于硬件故障、软件冲突、缺失关键系统文件等多种原因引起的。 下面是对此问题的解决攻略: 步骤一:检查硬件连接 首先,确保 Win11 计算机的每个硬件部件都正确连接。此外,请确保所有硬件部件都处于工作状态并适当地供电。如果其中某一…

    C 2023年5月23日
    00
  • 详解C++的JSON静态链接库JsonCpp的使用方法

    下面是“详解C++的JSON静态链接库JsonCpp的使用方法”的完整攻略: 简介 JsonCpp是C++中实现JSON格式数据解析和生成的一种开源静态链接库。它可以解析、读取和生成JSON数据,使用简单方便,可移植性强,并且支持多种操作系统和编译器。 官网地址:https://github.com/open-source-parsers/jsoncpp 使…

    C 2023年5月23日
    00
  • C++产生随机数的实现代码

    以下是关于C++产生随机数的实现攻略: 1. 使用标准库函数 C++中内置了产生随机数的函数:std::rand()。该函数需要在使用前先调用srand()函数进行初始化。srand()函数可以接受一个参数,该参数为种子值,通常使用代表当前系统时间的值或者当前进程ID等较为常见。 示例代码: #include <iostream> #includ…

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