JSON.stringify(obj)是常用的将js对象转换为json字符串的方法,但很少有人知道,该方法其实还有另外2个参数。

1、方法

方法定义:JSON.stringify(value, replacer, space)

参数说明:value:js对象
                  replacer:替换对象,可以是一个方法、对象或数组,将value按照替换规则展示。

space:填充参数,可以是数字或字符串,将value按照参数进行格式化展示。
方法说明:将value对象转换为指定格式的json文本。

2、参数value

如果不转换对象注解输出对象的效果:

使用JSON.stringify(value)的效果
js:

  1. $(function(){
  2. $("#strTest").text(JSON.stringify("字符串测试"));
  3. var testObj = {
  4. name:"张三",
  5. age:28,
  6. gender:"男"
  7. };
  8. $("#objTest").text(JSON.stringify(testObj));
  9. var testArr = [{
  10. name:"张三",
  11. age:20,
  12. gender:"男"
  13. },
  14. {
  15. name:"李思",
  16. age:28,
  17. gender:"女"
  18. }]
  19. $("#arrTest").text(JSON.stringify(testArr));
  20. })

页面效果:

3、参数replacer

参数为function(key,value),会根据函数返回值替换value中的值。

例如替换上面对象的gender为英文大写。
js:
  1. var testObj = {
  2. name:"张三",
  3. age:28,
  4. gender:"man"
  5. };
  6. $("#objTest").text(JSON.stringify(testObj,testReplacer));
  7. var testArr = [{
  8. name:"张三",
  9. age:20,
  10. gender:"gril"
  11. },
  12. {
  13. name:"李思",
  14. age:28,
  15. gender:"gril"
  16. }]
  17. $("#arrTest").text(JSON.stringify(testArr,testReplacer));
  18. function testReplacer(key,value){//key为对象属性名,value为对象属性值,会遍历testObj或testArr来执行该函数
  19. if(key=="gender"){
  20. value = value.toUpperCase();
  21. }
  22. return value;
  23. }

页面效果:

参数为object对象,并不会影响原对象。
参数为数组时,会遍历数组的值,以数组的值作为value的属性。如果value原本包含该属性,那么显示该属性,如果不包含则不显示。例如:
  1. var name = ["name","gril","gender"];
  2. var testObj = {
  3. name:"张三",
  4. age:28,
  5. gender:"man"
  6. };
  7. $("#objTest").text(JSON.stringify(testObj,name));
  8. var testArr = [{
  9. name:"张三",
  10. age:20,
  11. gender:"gril"
  12. },
  13. {
  14. name:"李思",
  15. age:28,
  16. gender:"gril"
  17. }]
  18. $("#arrTest").text(JSON.stringify(testArr,name));

上面的name数组包含3个值,而testObj对象值包含其中的name属性和gender属性,并不存在gril属性,所以,只会显示name和gender属性。效果如下:

如果将参数改为一个对象数组,那么因为对象不是一个属性,key值为“”,所以会显示一个空对象:{}。

4、参数space

如果space参数为数字n时,value对象将被格式化,并且属性会缩进n个字符。n>10时,只会缩进10个空格,n<10时,缩进n个空格,n<=0时不进行格式化。例如:
  1. $("#objTest").text(JSON.stringify(testObj,null,8));
  2. $("#arrTest").text(JSON.stringify(testArr,name,8));

缩进8个空格展示。

如果space为特殊字符时,按照特殊字符格式化。
例如:"\n":每行换行。"aa":每行头部添加aa字母。
  1. $("#objTest").text(JSON.stringify(testObj,null,"\n"));
  2. $("#arrTest").text(JSON.stringify(testArr,name,"aa"));

效果如下:

希望能带给你帮助!

JSON.stringify(value, replacer, space)详解相关推荐

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

    1. JSON.stringify(value[, replacer[, space]]);value 必需 对象或数组,需要转换成json字符串的数据replacer 可选 函数或数组space 可 ...

  2. JS/JavaScript中解析JSON --- JSON.parse()、JSON.stringify()以及$.parseJSON()使用详解

    JS/JavaScript中解析JSON --- JSON.parse().JSON.stringify()以及$.parseJSON()使用详解 现在JSON格式在web开发中非常重要,特别是在使用 ...

  3. Node.js中package.json中库的版本号详解(^和~区别)

    Node.js中package.json中库的版本号详解(^和~区别) 当我们查看package.json中已安装的库的时候,会发现他们的版本号之前都会加一个符号,有的是插入符号(^),有的是波浪符号 ...

  4. JWT(Json web token)认证详解

    JWT(Json web token)认证详解 什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该to ...

  5. python 编码解码原理_Python JSON编解码方式原理详解

    这篇文章主要介绍了Python JSON编解码方式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概念 JSON(JavaScript Ob ...

  6. java读写json格式的文件方法详解.txt,并批量存储进redis

    捐躯赴国难,视死忽如归.恸哭六军俱缟素,冲冠一怒为红颜.君子坦荡荡,小人长戚戚.风日晴和人意好,夕阳箫鼓几船归.民为贵,社稷次之,君为轻.Java 读写json格式的文件方法详解 文章录入:7747. ...

  7. JSON数据构造及解析详解

    JSON数据构造及解析详解 1.JSON格式数据长啥样? 2.JSON简介 JSON(Javascript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和 ...

  8. python内置json模块的作用_python详解json模块

    我们在做工作中经常会使用到json模块,今天就简单介绍下json模块 什么是json JSON ,全称为JavaScript Object Notation, 也就是JavaScript 对象标记,它 ...

  9. JSON JOLT介绍 及语法详解-shift篇

    有很多同学跟我反映  博客里的很多图都没了,真的很抱歉: 目前CSDN这里的博客不会再维护了,关于NIFI的文章会陆续在 https://nifichina.gitee.io https://nifi ...

  10. pythonjson实例_python对json的相关操作实例详解

    本文实例分析了python对json的相关操作.分享给大家供大家参考,具体如下: 什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人 ...

最新文章

  1. MySQL的binlog_row_image
  2. 洛谷 1373 小a和uim之大逃离
  3. 查询存在表1但不存在表2的所有数据
  4. 高薪进大厂 | 面试指南
  5. 属性总结(三):plt.rcParams
  6. 创业者:永远站着顾客这边
  7. android sdk manager 更新失败
  8. AT4 more about the sphere
  9. 接口(Api)版本号命名规则
  10. java jpa是什么_jpa是什么框架?jpa是什么意思?
  11. 通过搜狗蜘蛛池,让网站收录排名提升
  12. 经典的损人的话  (不带一个脏字,够狠毒)
  13. Allegro铜皮倒角技巧-shape倒角
  14. WebRTC中的信令和内网穿透技术 STUN / TURN
  15. 1D卷积入门:一维卷积是如何处理数字信号的
  16. 马斯克说用激光雷达都是傻子?中国自动驾驶业者被惹怒了!
  17. TP-LINK TL-WR720N 客户端模式设置
  18. 西雅图,夜未眠 2008-06-27
  19. [实验室每日一题][20201124][Zip已知明文攻击]
  20. Graph Theory 离散数学第六章

热门文章

  1. 动手学深度学习(第六章 循环神经网络)
  2. axure9实用操作设置鼠标单击交互事件为什么没响应
  3. pytorch:自定义损失函数total variation loss
  4. Strom完整攻略(一)
  5. Matlab 两条曲线间填充颜色,改变透明度
  6. 论文笔记(5.16,文本抗击,defense)--Combating Adversarial Misspellings with Robust Word Recognition
  7. mybatis之choose标签
  8. 基于微信小程序的毕业设计题目(35)PHP医院预约挂号小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
  9. 基因表达相关性——笔记
  10. excel打不开html格式的文件,excel扩展名,教您解决Excel无法打开文件因为文件或文件扩展名无效...