如何使用 JSON.parse() 和 JSON.stringify()

2023-11-07

介绍

The JSON object在所有现代浏览器中都可用,有两种有用的方法来处理 JSON 格式的内容:parse and stringify.

JSON.parse()

JSON.parse()获取 JSON 字符串并将其转换为 JavaScript 对象。

let userStr = '{"name":"Sammy","email":"sammy@example.com","plan":"Pro"}';

let userObj = JSON.parse(userStr);

console.log(userObj);

执行此代码将产生以下输出:

Output
{name: 'Sammy', email: 'sammy@example.com', plan: 'Pro'} email: "sammy@example.com" name: "Sammy" plan: "Pro"

尾随逗号在 JSON 中无效,因此JSON.parse()如果传递给它的字符串有尾随逗号,则会抛出错误。

JSON.parse()可以将函数作为第二个参数,该函数可以在返回对象值之前对其进行转换。

这里,在返回的对象中,对象的值被转换为大写parse method:

let userStr = '{"name":"Sammy","email":"sammy@example.com","plan":"Pro"}';

let userObj = JSON.parse(userStr, (key, value) => {
  if (typeof value === 'string') {
    return value.toUpperCase();
  }
  return value;
});

console.log(userObj);

执行此代码将产生以下输出:

Output
{name: 'SAMMY', email: 'SAMMY@EXAMPLE.COM', plan: 'PRO'} email: "SAMMY@EXAMPLE.COM" name: "SAMMY" plan: "PRO"

这些值已转换为大写字符。

JSON.stringify()

JSON.stringify()获取 JavaScript 对象并将其转换为 JSON 字符串。

let userObj = {
  name: "Sammy",
  email: "sammy@example.com",
  plan: "Pro"
};

let userStr = JSON.stringify(userObj);

console.log(userStr);

执行此代码将产生以下输出:

Output
{"name":"Sammy","email":"sammy@example.com","plan":"Pro"}

JSON.stringify()可以采用两个附加参数。第一个是replacer功能。第二个是一个String or Number用作的值space在返回的字符串中。

替换函数可用于过滤掉值,因为任何值返回为undefined将在返回的字符串之外:

let userObj = {
  name: "Sammy",
  email: "sammy@example.com",
  plan: "Pro"
};

function replacer(key, value) {
  console.log(typeof value);
  if (key === 'email') {
    return undefined;
  }
  return value;
}

let userStrReplacer = JSON.stringify(userObj, replacer);

console.log(userStrReplacer);

执行此代码将产生以下输出:

Output
{"name":"Sammy","plan":"Pro"}

The email键值对已从对象中删除。

一个例子space传入的参数:

let userObj = {
  name: "Sammy",
  email: "sammy@example.com",
  plan: "Pro"
};

let userStrSpace = JSON.stringify(user, null, '...');

console.log(userStrSpace);

执行此代码将产生以下输出:

Output
{ ..."name": "Sammy", ..."email": "sammy@example.com", ..."plan": "Pro" }

缩进已替换为....

结论

在本教程中,您使用了JSON.parse() and JSON.stringify()方法。如果您想了解有关在 Javascript 中使用 JSON 的更多信息,请查看我们的如何在 JavaScript 中使用 JSON教程。

有关 JavaScript 编码的更多信息,请查看我们的如何使用 JavaScript 进行编码系列,或查看我们的 JavaScript 主题页面用于练习和编程项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JSON.parse() 和 JSON.stringify() 的相关文章

  • JavaScript“类”的规范术语[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这是一个在 JavaScript 中定义 类 创建它的实例并调用它的方法 函数之一的简单示例 Define a class like this
  • 如何使用鼠标单击选择多个项目?

    This is the default jQueryUI display as a Grid Layouts demo here http jqueryui com demos selectable display grid I can s
  • 减少 JavaScript 中的对象数组

    我在 javascript 中有一个想要减少的对象数组 请参阅下面的代码 6 位或以上的消息已验证 较少的消息未验证 我将他们按组分组 const myArray group groupA message Text without a nu
  • React 测试库:当输入表单上的 fireEvent 更改时,给定元素没有值设置器

    我想改变的值材质用户界面 https material ui com components text fields TextField在反应测试库中 我已经设置了 data testid 然后使用getByTestId我拿起了输入元素 th
  • 如何在 guildMemberAdd 中使用awaitReactions

    当用户连接到我的服务器时 我向他们发送消息 并且我想通过单击反应来继续授权 我怎样才能创建这个 我正在使用以下代码 robot on guildMemberAdd gMembAdd gt gMembAdd send Hi gMembAdd
  • 无法使用 Node.JS 将 null 值发送到 MySQL 数据库

    我正在尝试发送null使用 Node JS 到我的 MySQL 数据库 con query INSERT INTO Routes routeTrigger VALUES null title test function err result
  • 使用西里尔字母的正则表达式

    我有一个用于文本区域字段中字数统计的 jQuery 函数 此外 它排除所有用 三重括号 封闭的单词 它对于拉丁字符效果很好 但对于西里尔字母句子有问题 我认为错误部分与正则表达式有关 field val replace g match b
  • JavaScript 函数参数和范围

    我用下面列出的代码做了一些测试 function foo x alert y var y I am defined outside foo definition foo 上面的代码给了我一个警告 我是在 foo 定义之外定义的 然后另一个测
  • 如何防止缓慢脚本警告并强制浏览器继续运行脚本直到完成?

    更新 2013 年 7 月 5 日 自从我最初问这个问题以来 我学到了很多东西 在下面的一条评论中 有人建议我重新处理该任务 并找到一种方法来解决它 而不会有阻塞 UI 的风险 我说不可能 函数必须按原样运行 我实际上不记得我试图用这个函数
  • Node.JS Web 服务器中的安全性

    所以 我正在学习 Node JS 到目前为止我很喜欢它 我已经有几个项目在工作了 我想我可以在其中使用nodejs 不过 我担心安全问题 如果我使用 Node JS http 模块编写自定义 Web 服务器 我是否可能非常容易受到攻击 Ap
  • 如何切换整个页面的深色主题?

    我已经成功地在 html 和 Flask 中按下复选框时切换深色主题和浅色主题 但是我怎样才能让深色主题覆盖整个页面 而不仅仅是一些 div 元素呢 边距仍然是浅色主题 CSS代码如下 container display flow widt
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 需要了解Javascript函数提升示例

    我阅读了 Javascript 提升的概念 它非常令人困惑 但我看到了一些示例并了解了提升的实际作用 所以基本上 提升是 JavaScript 的默认行为 即将所有声明移动到当前作用域的顶部 当前脚本或当前函数的顶部 但我无法理解以下实现
  • 不用AJAX,前台同步拖放文件上传?

    我有一个定期的网站
  • 如何在 Android 设备(平板电脑和手机)方向更改时获得正确的窗口宽度

    我正在尝试使用 jquery 函数计算 Android 设备方向变化时的窗口宽度 window outerWidth true 此计算给出了两个方向变化的正确宽度iphone and ipad但在安卓中不行 如果我最初以横向模式或纵向模式加
  • 如何检查 URL 末尾是否有特定字符串

    我需要根据 URL 末尾的内容让覆盖层向下滑动 如果 URL 末尾有 faq 覆盖层下降 如何在 jQuery JavaScript 中做到这一点 如果您的网址看起来像这样http yourdomain com faq 你可以这样做 var
  • ajax - 检查用户名是否存在+如果存在则返回消息

    我试图检查用户想要的用户名是否已被使用 而无需发送表单 基本上是用户名字段的模糊 我遇到了一些麻烦 有几个问题 我有我的输入字段加上js
  • 使用 Java 进行 AES 加密并使用 Javascript 进行解密

    我正在制作一个需要基于 Java 的 AES 加密和基于 JavaScript 的解密的应用程序 我使用以下代码作为基本形式进行加密 public class AESencrp private static final String ALG
  • 谷歌地图通过骨干javascript返回div标签但不显示

    我已经开始使用地理定位 我可以获得坐标等 我想在地图中显示它 但是当我将地图返回到 div 时 什么也没有显示 现在我查看了 div 地图正在返回 但只是不可见 这是有问题的 div 请注意 这似乎只是一个小地图的链接 a style di
  • 如何在 Mongo 聚合管道的 $unwind 阶段保留零长度值?

    我正在使用聚合管道编写 Mongo 查询 在聚合过程中 我需要 unwind领域之一 但是 我不想要 unwind排除该字段具有零长度数组的条目 因为我仍然需要它们进一步深入管道 我的领域叫做items它是一个对象数组 每个对象包含两个值

随机推荐

  • 如何创建可启动的 Linux USB 驱动器

    通常 在笔记本电脑或 PC 上安装某些 Linux 发行版的全新副本时 您需要一个包含要安装的发行版的可启动 USB 本教程将引导您完成在 Windows macOS 和 Linux 计算机上创建可启动 Linux USB 记忆棒所需的步骤
  • 如何在 Debian 10 上安装 Visual Studio Code

    视觉工作室代码是微软开发的免费开源跨平台代码编辑器 它具有内置的调试支持 嵌入式Git控制 语法突出显示 代码完成 集成终端 代码重构和片段 可以使用扩展来扩展 Visual Studio Code 功能 本教程介绍如何在 Debian 1
  • 如何检查 PostgreSQL 版本

    PostgreSQL 通常简称为 Postgres 是一个开源通用对象关系数据库管理系统 在某些情况下 了解系统上安装并运行的 PostgreSQL 服务器版本可能很重要 例如 如果您要安装需要特定 PostgreSQL 版本的应用程序 则
  • 如何在 Ubuntu 20.04 上安装 R

    R 是一种开源编程语言和免费环境 专门从事统计计算和图形表示 它主要由统计学家和数据挖掘人员用于开发统计软件和执行数据分析 本文介绍了在 Ubuntu 20 04 上安装 R 所需的步骤 先决条件 在继续本教程之前 请确保您已满足以下先决条
  • 如何在 Debian 10 上安装 TeamViewer

    团队查看器是一款跨平台应用程序 可用于远程控制 桌面共享 在线会议以及计算机之间的文件传输 本教程介绍如何在 Debian 10 Buster 上安装 TeamViewer 先决条件 在继续本教程之前 请确保您以以下身份登录具有 sudo
  • 如何在 Python 中注释

    编写 Python 代码时 让代码简洁且易于理解始终是一个好习惯 组织代码 为变量和函数指定描述性名称是实现此目的的几种方法 提高代码可读性的另一种方法是使用注释 注释是用于解释代码的人类可读的解释或注释 例如 如果您编写了一个复杂的正则表
  • 如何在 Debian Linux 9 上安装 VirtualBox

    虚拟盒子是一款开源跨平台虚拟化软件 允许您同时运行多个来宾操作系统 虚拟机 本教程介绍如何在 Debian 9 上安装最新的 VirtualBox 6 0 先决条件 您需要以以下身份登录具有 sudo 访问权限的用户能够在 Debian 系
  • 如何在 Debian 10 上安装 TensorFlow

    TensorFlow是谷歌打造的一个开源机器学习平台 它可以在不同设备上的CPU或GPU上运行 TensorFlow 可以在 Python 虚拟环境中安装在系统范围内 作为Docker容器 或使用 Anaconda 在本教程中 我们将解释如
  • 如何在 Ubuntu 16.04 上将 Apache Web 根移动到新位置

    介绍 在 Ubuntu 上 默认情况下 Apache2 Web 服务器将其文档存储在 var www html 它通常与操作系统的其余部分一起位于根文件系统上 但有时 将文档根移动到另一个位置会很有帮助 例如单独安装的文件系统 例如 如果您
  • 如何在 Ubuntu 16.04 上使用 Apache 和 mod_wsgi 为 Django 应用程序提供服务

    介绍 Django 是一个功能强大的 Web 框架 可以帮助您快速启动 Python 应用程序或网站 Django 包含一个简化的开发服务器 用于在本地测试代码 但对于任何与生产稍微相关的事情 都需要更安全 更强大的 Web 服务器 在本指
  • Java线程等待、通知和notifyAll示例

    java中的Object类包含三个final方法 允许线程就资源的锁定状态进行通信 这些方法是wait notify and 通知全部 那么今天我们就来研究一下java程序中的wait notify和notifyAll Java中的等待 通
  • Systemd 要点:使用服务、单位和期刊

    介绍 近年来 Linux 发行版越来越多地从其他 init 系统过渡到systemd The systemd工具套件提供了快速灵活的初始化模型 用于从启动开始管理整个机器 在本指南中 我们将向您快速介绍您在管理应用程序时需要了解的最重要的命
  • Primefaces FileUpload 组件示例教程

    今天我们将研究 Primefaces FileUpload 组件 HTML 为您提供file输入标签来选择文件 但是我们需要更多信息才能将文件上传到服务器 Primefaces 为您提供现成的解决方案 消除了这种负担文件上传组件帮助您创建漂
  • 如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书

    介绍 TLS 或传输层安全 及其前身SSL代表安全套接字层 是用于将正常流量包装在受保护的加密包装器中的 Web 协议 使用此技术 服务器可以在服务器和客户端之间安全地发送流量 而不会出现消息被外部各方拦截的可能性 证书系统还帮助用户验证他
  • 如何在 Angular Material 中使用自定义 SVG 图标

    介绍 The 角材料库提供了一套采用 Material Design 风格的 Angular 组件 其中一个这样的组件是
  • 如何在 Ubuntu 12.04 上安装 MongoDB

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • React Router v6 抢先体验

    在撰写本文时 React Router v6 仍处于 alpha 阶段 但现在是时候开始使用它并探索未来的发展了 本指南将带您了解新功能 变化 如您所知 主要维护者分叉了反应路由器项目创建一个轻量级替代品 称为到达路由器2018年初 在此期
  • 在 Linux 中减小 PDF 文件大小

    在我们的 Linux 系统中 如果我们有一个很大的 PDF 文件 我们可能想减小它的大小 在本教程中 我们将了解在 Linux 中减小 PDF 大小或压缩 PDF 文件的不同方法 让我们找出一些命令行和 GUI 方法来处理这个问题 在 Li
  • 如何在 FreeBSD 10.1 上安装 Apache、MySQL 和 PHP (FAMP) 堆栈

    介绍 FAMP 堆栈类似于 Linux 上的 LAMP 堆栈 是一组开源软件 通常安装在一起以使 FreeBSD 服务器能够托管动态网站和 Web 应用程序 FAMP 是首字母缩略词 代表FfreeBSD 操作系统 A阿帕奇 网络服务器 M
  • 如何使用 JSON.parse() 和 JSON.stringify()

    介绍 The JSON object在所有现代浏览器中都可用 有两种有用的方法来处理 JSON 格式的内容 parse and stringify JSON parse JSON parse 获取 JSON 字符串并将其转换为 JavaSc