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日

相关文章

  • ajax实现加载数据功能

    下面是“ajax实现加载数据功能”的完整攻略: 什么是 AJAX? Ajax即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML)。Ajax 可以在不重新加载整个网页的情况下,请求服务器返回不同的数据。比如,在一个搜索页面中,当用户输入关键字搜索时,可以通过 Ajax 在不刷新页面的情况下返回相应的搜索…

    JavaScript 2023年6月11日
    00
  • JavaScript立即执行函数的三种不同写法

    当我们想要立即调用一个函数时,就需要用到JavaScript立即执行函数。立即执行函数是一个函数执行完毕后立即被调用执行,而不是等到再次调用。它常用于模块化开发,而这个函数中的变量不会污染全局变量。 下面来讲解三种不同写法: 写法一:使用圆括号把函数括起来 (function() { // 函数体 })(); 这是最常见的一种写法,把函数用圆括号括起来,这个…

    JavaScript 2023年5月27日
    00
  • Javascript Global isNaN() 函数

    以下是关于JavaScript Global对象中isNaN()函数的完整攻略,包括两个示例说明。 JavaScript Global对象中的isNaN()函数 JavaScript Global对象中的isNaN()函数用于判断一个值是否为NaN(Not a Number)。如果一个值是NaN,则返回true,否则返回false。isNaN()函数可以用于…

    JavaScript 2023年5月11日
    00
  • 深浅拷贝

    // 注意: 基本数据类型不存在深浅拷贝,只是值传递,复合数据类型才有深浅拷贝之说         var obj1 = { name: “吴亦凡” };         var obj2 = obj1;         obj1.name = “罗志祥”;         // 相当于把obj1的指针复制了一份给了obj2,两个指针指向了堆内存中的一块内存…

    JavaScript 2023年4月18日
    00
  • HTML5中的websocket实现直播功能

    下面是关于“HTML5中的WebSocket实现直播功能”的完整攻略: 一、什么是WebSocketWebSocket是一个协议,它提供了在单个TCP连接上进行全双工通信的能力,并能够让服务器主动向客户端推送数据。相比于HTTP,WebSocket的一个明显优点就是它的实时性更高,因为不需要为了发送数据而频繁地建立和关闭TCP连接。 二、创建WebSocke…

    JavaScript 2023年6月11日
    00
  • js opener的使用详解

    JavaScript中的opener 在JavaScript中,window.opener是一个全局对象,它代表调用当前窗口的父窗口对象。即如果我们使用一个子窗口来打开一个页面,那么该页面中的window.opener就代表了该子窗口的父窗口对象。opener对象的使用非常灵活,提供了多种用法。下面我们来详细了解一下opener对象。 属性 window.o…

    JavaScript 2023年6月11日
    00
  • html5指南-7.geolocation结合google maps开发一个小的应用

    下面是关于“HTML5指南-7.geolocation结合google maps开发一个小的应用”的详细攻略: 一、什么是geolocation? Geolocation是HTML5的一个新特性,它能够让我们通过浏览器获取到用户的地理位置信息,以及海拔高度和速度等信息。 二、如何结合google maps开发应用? 如果想要将geolocation和goog…

    JavaScript 2023年6月11日
    00
  • javascript事件模型介绍

    JavaScript事件模型介绍 JavaScript事件模型是一种基于浏览器内部事件循环机制的编程模型。通过事件模型,我们可以定义当某个特定事件发生时,需要执行的 JavaScript 代码。事件模型是一种异步编程的方式,它能够帮助我们编写更高效、更灵活、更交互性强的网页应用。 事件模型基本原理 事件模型基于一个事件监听器的机制,用于监视一个特定的事件是否…

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