JSON.stringify的应用说明

前言

JSON.stringify() 方法将 JavaScript 对象转换为字符串,在日常开发中较常用,但JSON.stringify其实有三个参数,后两个参数,使用较少,今天来介绍一下后两个参数的使用场景和示例。

语法及参数说明

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

语法

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

参数说明:

  • value:
    必需, 要转换的 JavaScript 值(通常为对象或数组)。
  • replacer:
    可选。用于转换结果的函数或数组。
    如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:“”。
    如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。
  • space:
    可选,文本添加缩进、空格和换行符。如果是数字,则表示每个级别的缩进空格数。space 也可以使用非数字,如:\t、\n、\r。

使用示例

  • JavaScript 对象转换,space参数的使用

const obj = {name: "Runoob",price: 10000,suport: "China",
};
console.log("默认转换", JSON.stringify(obj));
console.log("空格缩进", JSON.stringify(obj, null, 4));
console.log("/t缩进", JSON.stringify(obj, null, "\t"));
console.log("/n缩进", JSON.stringify(obj, null, "\n"));
console.log("/r缩进", JSON.stringify(obj, null, "\r"));

输出结果:
在这里插入图片描述

  • repalce参数的使用

JSON 不允许包含函数,JSON.stringify() 会删除 JavaScript 对象的函数,包括 key 和 value。
如果需要保留函数,可以使用 replacer 函数。如果要保留对象中的函数,可以在执行 JSON.stringify() 函数前将函数转换为字符串来避免被删除。

var obj2 = {name: "Runoob",alexa: function () {return 10000;},suport: "China",
};
console.log("默认转换", JSON.stringify(obj2));

输出结果: {"name":"Runoob","suport":"China"}
从结果中可以看到,javascript中的函数被自动删除了,如果我们要保留,可以使用第二个参数replace来处理。

var obj2 = {name: "Runoob",alexa: function () {return 10000;},suport: "China",
};
//使用第二个参数,处理function函数
var toJsonStr = JSON.stringify(obj2, (key, value) => {if (typeof value === "function") {return value.toString();}return value;
});
console.log("使用replacer函数转字符串", toJsonStr);
//{"name":"Runoob","alexa":"function() {\n        return 1e4;\n      }","suport":"China"}// 将JSON字符串转换为JavaScript对象
let toObj = JSON.parse(toJsonStr);
// 转换为函数,此处也可以使用函数处理
toObj.alexa = eval("(" + toObj.alexa + ")");
console.log("log内容toObj.alexa()", toObj.alexa()); //10000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/471985.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java:接口,抽象,多态的综合小练习

package 综合抽象接口练习;public class person {protected String name;protected int age;person(){}person(String name,int age){this.namename;this.ageage;}public void setName(String name){this.namename;}public String getName(){return name;}public void setAge(i…

<AI 学习> 下载 Stable Diffusions via Windows OS

注意: 不能使用 网络路径 不再支持 HTTPS 登录,需要 Token 1. 获得合法的授权 Stability AI License — Stability AI 上面的链接打开,去申请 许可 2. 拥有 HuggingFace 账号 注册:https://huggingface.co/ 3. 配置 Tok…

【Visual Studio】设置文件目录

打开属性 输出目录:$(SolutionDir)bin\$(Platform)\$(Cinfiguration)\ 中间目录:$(SolutionDir)bin\intermediates\$(Platform)\$(Cinfiguration)\

linux病毒编写+vim shell编程

学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 请一定遵循《网络空间安全法》!!! Linux目录介绍 /bin 二进制可执行文件(kali里面是工具一些文件)/etc 系统的管理和配置文…

Hadoop 学习心得

一、引言 (一)学习 Hadoop 的背景和目的 随着信息技术的飞速发展,数据量呈爆炸式增长,传统的数据处理方式已难以满足需求。在这样的背景下,为了能够在大数据领域有所发展,我开始学习 Hadoop。Hadoop 作为处…

机器学习-35-提取时间序列信号的特征

文章目录 1 特征提取方法1.1 特征提取过程1.2 两类特征提取方法2 基于数据驱动的方法2.1 领域特定特征提取2.2 基于频率的特征提取2.2.1 模拟信号2.2.2 傅里叶变换2.2.3 抽取最大幅值对应特征2.2.4 抽取峰值幅值对应特征2.3 基于统计的特征提取2.4 基于时间的特征提取3 参考附录…

聊天服务器(9)一对一聊天功能

目录 一对一聊天离线消息服务器异常处理 一对一聊天 先新添一个消息码 在业务层增加该业务 没有绑定事件处理器的话消息会派发不出去 聊天其实是服务器做一个中转 现在同时登录两个账号 收到了聊天信息 再回复一下 离线消息 声明中提供接口和方法 张三对离线的李…

【CICD】CICD 持续集成与持续交付在测试中的应用

一、什么是CICD? CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery) 1.1 持续集成(Continuous Integration&#xf…

arkUI:水果选择与管理:基于 ArkUI 的长按编辑功能实现

水果选择与管理:基于 ArkUI 的长按编辑功能实现 1 主要内容说明2 相关内容2.1 相关内容2.1.1 源码1内容的相关说明2.1.1.1 数据结构与状态管理2.1.1.2 添加水果功能2.1.1.3 水果列表展示2.1.1.4 长按进入编辑模式2.1.1.5 复选框的多选功能2.1.1.6 删除水果功能2.1.1…

操作系统实验:在linux下用c语言模拟进程调度算法程序

文章目录 1、实验内容2、实验结果及分析3、如何在linux下编写并执行c语言程序以及实验源代码gcc -o test test.c1、实验内容 1)用C语言编程实现对N个进程采用某种进程调度算法(如动态优先权调度算法、先来先服务算法、短进程优先算法、时间片轮转调度算法)调度执行的模拟。…

【鸿蒙开发】第十一章 Stage模型应用组件-任务Mission

目录 1 任务(Mission)管理场景 2 任务(Mission)与启动模式 2.1 singleton单实例模式 2.2 multiton多实例模式 2.3 specified指定实例模式 3 页面栈及任务链 3.1 页面栈 3.2 任务链 4 设置任务快照的图标和名称 4.1 设置任务快照的图标&#xf…

postgresql.conf与postgresql.auto.conf区别

1. 简介 PostgreSQL 9.4版本开始引入postgresql.auto.conf 配置文件,作为postgresql.conf文件的补充,在配置文件格式上,它和postgresql.conf保持一致 1.1 postgresql.conf 这是一个静态的参数文件,包含了数据库服务器的基本配置…

如何实现主备租户的无缝切换 | OceanBase应用实践

对于DBA而言,确保数据库的高可用性、容灾等能力是其日常工作中需要持续思考和关注的重要事项。一方面,可以利用数据库自身所具备的功能来实现这些目标;若数据库本身不提供相应功能,DBA则需寻找其他工具来增强数据库的高可用性和容…

STM32芯片EXIT外部中断的配置与原理

配置EXIT外部中断其实就是把GPIO刀NVIC的各个外设配置好 第一步:配置RCC,把我们涉及到的外设的时钟都打开 (此处EXTI是默认打开的,而NVIC是内核外设无需配置) 第二步:配置GPIO,选择端口为输入模式 第三…

栈相关算法题1|通过栈判断链表是否对称|共享栈入栈出栈|括号匹配|多种括号配对|递归求序列最大值(C)

通过栈判断链表是否对称 设单链表的表头指针为L,data域为字符型,判断该链表的全部n个字符是否中心对称 xyx,xyyx 算法思想 使用栈来判断链表中的数据是否中心对称,让链表的前一半元素依次进栈 在处理链表的后一半元素时&#x…

[Mysql] Mysql的多表查询----多表关系(上)

1、介绍 在实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表、商品表、订单表等多张表。且这些表的数据之间存在一定的关系。 2、多表关系 Mysql多表之间的关系可以概括为:一对一、一对多/多对一、多对多关系…

【数据分享】全国农产品成本收益资料汇编(1953-2024)

数据介绍 一、《全国农产品成本收益资料汇编 2024》收录了我国2023年主要农产品生产成本和收益资料及 2018年以来六年的成本收益简明数据。其中全国性数据均未包括香港、澳门特别行政区和台湾省数据。 二、本汇编共分七个部分,即:第一部分,综合;第二部分,各地区粮食、油料;第…

使用 Prompt API 与您的对象聊天

tl;dr:GET、PUT、PROMPT。现在,可以使用新的 PromptObject API 仅使用自然语言对存储在 MinIO 上的对象进行总结、交谈和提问。在本文中,我们将探讨这个新 API 的一些用例以及代码示例。 赋予动机: 对象存储和 S3 API 的无处不在…

虎扑APP数据采集:JavaScript与AJAX的结合使用

引言 虎扑APP的数据采集涉及到前端和后端的交互,其中AJAX(Asynchronous JavaScript and XML)技术允许在不重新加载整个页面的情况下,与服务器进行数据交换和更新部分网页内容。这种技术使得数据采集过程更加高效和用户友好。然而…

Flutter实现绝对定位学习

通过 Stack Positioned实现Flutter绝对定位学习。 简单Demo import package:flutter/material.dart;class MyPositionedDemoPage extends StatelessWidget {const MyPositionedDemoPage({super.key});overrideWidget build(BuildContext context) {return Scaffold(appBar: …