JSON.stringify的应用说明

embedded/2024/11/18 22:14:35/

前言

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.ppmy.cn/embedded/138634.html

相关文章

OceanBase 升级过程研究(4.2.1.6-4.2.1.8)

模拟业务 使用benchmark加载10仓数据模拟业务场景 升级方法 使用滚动升级方式来进行OB升级。该方法前提是OB集群必须满足官方规定的高可用架构(如果 Zone 个数小于 3,滚动升级时则无法构成多数派), 滚动升级的原理就是轮流完成每个ZONE的升级工作,由于…

关系型数据库和非关系型数据库详解

文章目录 关系型数据库和非关系型数据库详解一、引言二、关系型数据库1、关系型数据库简介1.1、SQL语言 2、关系型数据库的实际应用3、关系型数据库的优点4、关系型数据库的缺点 三、非关系型数据库1、非关系型数据库简介1.1、灵活性示例 2、非关系型数据库的分类3、非关系型数…

Android 删除设置的WLAN偏好选项菜单,即设置不可见

vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/network/NetworkProviderSettings.java preference页面设置不可见 【出现在搜索框里面】【不可以注释network_provider_settings】 private void addPreferences() { addPreferences…

React Hooks在现代前端开发中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 引言 React Hooks …

iOS 18.1,未公开的新功能

童锦程祖师爷曾说过:“发誓可以,发朋友圈不行。”表面上看是渣男语录,实际上也说明了人们对隐私的看重。 在当今生活中,智能手机可能是最私密的电子产品,没有之一。不管是照片、联系人、短信、APP数据,甚至…

sentinel服务保护

一、整合sentinel 1、下载并启动sentinel 启动命令(默认是8080端口,因此修改端口号为8070) java -Dserver.port8070 -Dcsp.sentinel.dashboard.serverlocalhost:8070 -Dproject.namesentinel-dashboard -jar sentinel-dashboard-1.8.6.jar…

【C++】引用(reference)

引用是对一个变量或者对象取的别名 定义:真名的数据类型& 别名 真名; 既然是对一个变量或者对象取别名,那就得先有变量或对象,不能凭空取一个别名。也就是定义引用必须初始化。 对引用的操作和对引用对应的变量的操作是完全等价的引用…

C++: string(二)

✨✨ 欢迎大家来到我的文章✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 分类专栏:c 我的主页:tyler s blog 文章目录 一 string的成员函数1 insert2 resize3assign4erase5replace6 find(1) find(2)rfind…