JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数

下面是关于 JavaScript 中 JSON.parse 函数和 JSON.stringify 函数的详细讲解。

JSON 简介

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于 JavaScript 的一个子集,可以被多种不同编程语言读取和写入。

在 JavaScript 中要想将 JSON 数据转换为对象,或者将对象转换为 JSON 数据,可以使用 JSON.parse() 和 JSON.stringify() 方法。

JSON.parse() 方法

JSON.parse() 方法用于将一个JSON字符串转换为JavaScript对象。

基本用法:

const jsonStr = '{"name":"Jack", "age": 18, "city":"New York"}'
const obj = JSON.parse(jsonStr)
console.log(obj.name) // 输出 "Jack"

如果 JSON 字符串不符合规范(如缺失双引号或者属性名未加引号等),则该方法会抛出 SyntaxError 错误。

在 JSON.parse() 方法中还有一个可选的 reviver 参数,可以用来修改解析出来的对象或者数组。

例如,下面的代码演示了 reviver 参数的用法:

const jsonStr = '{"name":"Jack", "age": 18, "city":"New York"}'
const obj = JSON.parse(jsonStr, (key, value) => {
  if (key === 'age') {
    return value + 1
  }
  return value
})
console.log(obj.age) // 输出 19

在这个例子中,reviver函数判断如果键值为 "age" ,则将值加1后返回,否则返回原始值。

JSON.stringify() 方法

JSON.stringify() 方法将 JavaScript 对象或数组转换为 JSON 字符串。

基本用法:

const obj = {name: 'Jack', age: 18, city: 'New York'}
const jsonStr = JSON.stringify(obj)
console.log(jsonStr) 
// 打印结果: {"name": "Jack","age":18,"city":"New York"}

在 JSON.stringify() 方法中还包括第二个和第三个可选参数,分别是 replacer 和 space。

replacer 参数可以是一个函数或者数组。如果参数是一个函数,该函数将有机会修改存储在 JSON 字符串中的每个值。如果参数是一个数组,只有包含在数组中的属性名才会被序列化到 JSON 字符串中。

例如:

const obj = { a: 1, b: 2, c: 3 }
const jsonStr = JSON.stringify(obj, ['a', 'c']) 
console.log(jsonStr)
// 打印结果:{"a":1, "c":3}

// 使用 replacer 函数过滤
const jsonStr2 = JSON.stringify(obj, (key, value) => {
  if (key === 'a') {
    return undefined
  }
  return value
})
console.log(jsonStr2)
// 打印结果:{"b":2,"c":3}

space 参数可选,用来控制缩进的空格数。例如:

const obj = {name: 'Jack', age: 18, city: 'New York'}
const jsonStr = JSON.stringify(obj, null, 2)
console.log(jsonStr)
// 打印结果:
// {
//   "name": "Jack",
//   "age": 18,
//   "city": "New York"
// }

以上是关于 JSON.parse() 和 JSON.stringify() 方法的详细讲解攻略。

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

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

相关文章

  • js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器

    要获得指定控件输入光标的坐标,我们可以使用以下步骤: 获取页面中的指定控件对象 获取控件对象相对于页面左上角的位置 获取控件中光标的位置 将相对位置和光标位置相加,计算出光标在页面中的实际位置 以下是具体的实现步骤: 1.获取页面中的指定控件对象 我们可以使用document.getElementById方法获取指定id值的控件对象。例如,我们要获取id为t…

    JavaScript 2023年6月10日
    00
  • JavaScript函数防抖与函数节流的定义及使用详解

    JavaScript函数防抖与函数节流的定义及使用详解 函数防抖和函数节流是 JavaScript 常用的两种优化方案。它们可以延迟函数的执行,减少频繁请求和高频事件造成的性能问题。 一、函数防抖 在 JavaScript 中,如果频繁触发某个事件,比如输入框输入,鼠标滚动等,可能会造成函数频繁执行,影响性能。而使用函数防抖可以延迟函数的执行,只有等到一段时…

    JavaScript 2023年5月27日
    00
  • js使用对象直接量创建对象的代码

    通过使用对象直接量,我们可以方便快捷地创建JavaScript对象。在这篇攻略中,我将详细介绍如何使用对象直接量来创建对象,并提供两个示例以帮助您更好地理解。 什么是对象直接量? JavaScript对象可以通过使用对象直接量的方法来创建。对象直接量使用一对花括号 {} 来包含对象的属性和方法。下面是一个使用对象直接量创建对象的示例代码: var perso…

    JavaScript 2023年5月27日
    00
  • javascript开发随笔一 preventDefault的必要

    JavaScript开发随笔一:preventDefault的必要 在JavaScript开发中,我们经常会用到一些DOM操作,例如点击超链接跳转页面,提交表单等。但是有些时候,我们可能会需要改变这些默认行为,比如说:阻止页面跳转,防止表单提交。 这个时候,我们就需要用到事件对象的preventDefault()方法。这个方法可以阻止元素默认的行为,从而实现…

    JavaScript 2023年6月11日
    00
  • javascript利用正则快速找出两个字符串的不同字符

    JavaScript利用正则表达式可以快速找出两个字符串的不同字符,具体的步骤如下: 首先将两个字符串的长度进行比较,以较短的字符串长度为基准。 对两个字符串进行遍历,比较对应字符是否相等,如果不相等,就将差异字符记录下来。 利用正则表达式去重,即将记录下来的差异字符进行去重操作。 下面是两个示例说明: 示例1: function findDifferent…

    JavaScript 2023年5月28日
    00
  • 关于JAVASCRIPT urldecode URL解码的问题

    关于JavaScript中的URL解码,我们来一步步了解一下。 什么是URL解码 在浏览器中输入一个网址,比如http://www.example.com/query?key=JavaScript%20%E5%AD%A6%E4%B9%A0%E5%A4%A7%E5%85%A8,浏览器发送请求时,会将URL中的中文和特殊字符进行编码,以保证数据的安全性和正确性。…

    JavaScript 2023年5月19日
    00
  • JS基于贪心算法解决背包问题示例

    JS基于贪心算法解决背包问题示例 什么是贪心算法 贪心算法是一种直接寻求局部最优解以达到全局最优的算法,即采取贪心策略,每次做出当时看来最好的选择,不考虑将来的结果,也不进行回溯,只关心眼前的选择会不会对当前局面产生最优的影响。贪心算法的特点是简单、高效、易于证明正确性,并且常用于求解组合优化问题,如背包问题、最小生成树问题、哈夫曼编码等。 背包问题 背包问…

    JavaScript 2023年5月28日
    00
  • 在线数据库管理工具(db007) v1.5

    在线数据库管理工具(db007) v1.5 完整攻略 简介 在线数据库管理工具(db007) v1.5是一个在线管理数据库的开源工具,它提供了简单易用的用户界面,可以方便地进行数据库的增删改查等操作,支持多种主流数据库系统。 安装和部署 在线数据库管理工具(db007) v1.5是基于web的工具,可以直接通过浏览器访问使用,无需安装或部署。只需要将项目代码…

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