在JavaScript中,可以Json.stringfy()的方法将值转换为字符串(string)

一般的用法如下:

const value = {name: 'zhansan',age:18,
}const jsonValue = JSON.stringify(value);

获得的jsonValue结果是

{"name":"zhansan","age":18}

除了以上的用法,还有其他的拓展用法的:

在源码中,我们可以看出

interface JSON {/*** Converts a JavaScript value to a JavaScript Object Notation (JSON) string.* @param value A JavaScript value, usually an object or array, to be converted.* @param replacer A function that transforms the results.* @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.*/stringify(value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;/*** Converts a JavaScript value to a JavaScript Object Notation (JSON) string.* @param value A JavaScript value, usually an object or array, to be converted.* @param replacer An array of strings and numbers that acts as an approved list for selecting the object properties that will be stringified.* @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.*/stringify(value: any, replacer?: (number | string)[] | null, space?: string | number): string;
}

从原码中可以发现还是存在两位两个参数: replacer 和 space

1. replacer

这一个参数最主要用于控制结果的输出,即是,有时候我们并不希望我们的全部值被输出,可能我们会通过去处理值,再输出,但是这样实际上是浪费了存储空间的,而 JSON.stringify() 这个方法就提供了replacer这个选项。

从上述代码中可以看出,其有两种形式,一种是函数形式,一种是数组形式

1. 使用数组的形式,只转换数组中存在的值

const value = {name: 'zhansan',age:18,sex:'box',hobby: 'running',
}const jsonValue = JSON.stringify(value, ['name','age']);console.log(jsonValue)
// {"name":"zhansan","age":18}

2. 通过函数形式去处理

const value = {name: 'zhansan',age:18,sex:'box',hobby: 'running',
}const jsonValue = JSON.stringify(value, ((key, val) => {if(key === 'age'){return undefined}return val;
}));console.log(jsonValue)
//{"name":"zhansan","sex":"box","hobby":"running"}

2. space

参数用来控制结果字符串里面的间距。如果是一个数字,则在字符串化时每一级别会比上一级别缩进多这个数字值的空格(最多 10 个空格);如果是一个字符串,则每一级别会比上一级别多缩进该字符串(或该字符串的前 10 个字符)。

const value = {name: 'zhansan',age:18,sex:'box',hobby: 'running',
}const jsonValue = JSON.stringify(value, null, 1);console.log(jsonValue)

输出结果

{"name": "zhansan","age": 18,"sex": "box","hobby": "running"
}

还有一个 toJson的方法,就是在对象中添加 toJson 这一个方法,当进行序列化时,被序列化不是该对象,而是此方法,

const value = {name: 'zhansan',age:18,sex:'box',hobby: 'running',toJSON: function () {return 'this is a test ';}
}const jsonValue = JSON.stringify(value, null, 5);console.log(jsonValue)

得到的结果

"this is a test "

【JS】JSON.stringify( )相关推荐

  1. 【js】JSON.stringify 语法实例讲解

    语法:  JSON.stringify(value [, replacer] [, space]) value:是必选字段.就是你输入的对象,比如数组,类等. replacer:这个是可选的.它又分为 ...

  2. 【JS】json导出到excel,自定义文件名和后缀名

    json导出excel表格 HTML <el-button type="danger" class="ml10 fr" @click="expo ...

  3. 【JS】【掘金】看看你所关注的掘友值排行榜

    前言 掘金新鲜出炉的掘友值.掘友等级玩法~ 你会玩了吗? 没有排行榜? 那咱们就简单做一个,看看和自己所关注的大佬们的掘友分数排行吧! 基于这篇改造:<[JS][掘金]获取关注了里不在关注者里的 ...

  4. 【JS】【掘金】看看你所有粉丝的掘友值排行榜

    前言 掘金新鲜出炉的掘友值.掘友等级玩法~ 你会玩了吗? 没有排行榜? 那咱们就简单做一个,看看和自己的的粉丝们掘友值分数排行吧! 基于这篇改造:<[JS][掘金]获取关注了里不在关注者里的人& ...

  5. 【JS】WTool.js 基于JQuery的工具集 (写着玩的)

    [JS]WTool.js  基于JQuery的工具集 (写着玩的) // console.info("加载WTool中...")/*** 威工具1.基于Jquery开发2.参考VU ...

  6. 【JS】JS中数值型字符串相加变成拼接字符串的解决方法

    [JS]JS中数值型字符串相加变成拼接字符串的解决方法 参考文章: (1)[JS]JS中数值型字符串相加变成拼接字符串的解决方法 (2)https://www.cnblogs.com/xsjs/p/1 ...

  7. 【03】json使用

    [03]json使用 把 JSON 文本转换为 JavaScript 对象 JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSO ...

  8. 【cJson】 JSON格式详解

    0.前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programmin ...

  9. 【JS】教你如何在对象内任意位置插入任意属性

    [JS]教你如何在对象内任意位置插入任意属性 如果你不知道我写这篇文章的目的是什么,那不妨想想这样一个场景 var obj = {a: "A",c: "C",d ...

最新文章

  1. DV录像带导出一定要用1394
  2. (转)Java并发编程:线程池的使用
  3. Android列表视图(List View)
  4. 简单的错觉画_错觉图片生成实验 - 正方形错觉
  5. 【顶尖技术人是怎样炼成的】清华博士的模型信仰——对话阿里云 MVP陈旸
  6. .net core 实现简单爬虫—抓取博客园的博文列表
  7. 睡觉时:新增的Java 8新增功能
  8. 彻底解决 Jenkins Slaver 节点无法执行 Git-LFS 命令
  9. 元气骑士机器人的成就皮肤_元气骑士:5把特殊“红武”,想要机器人的皮肤,用它就对了!...
  10. HighTec安装教程
  11. ITIL学习笔记——ITIL入门小知识
  12. STM32LED--基于HAL库(LCD与LED冲突?一文看懂如何精准劝架)
  13. GMT和UTC时区概念
  14. B 站递给 GitHub 的 DMCA 文件被公布,蹩脚的英语引发争议
  15. Android版添加phonegap--融云即时通讯插件教程
  16. 移动端和pc端浏览器兼容问题及处理
  17. mysql主从同步延迟优化大全
  18. 自定义控件解决android中TextView中英文换行问题
  19. 使用谷歌、360浏览器的F12功能模拟微信访问网页
  20. 不动点迭代(Fixed Point Iteration)

热门文章

  1. IDEA安装卸载插件
  2. DOS攻击和DDOS攻击之间有什么区别?
  3. uiautomation 模块
  4. 金山卫士开源软件之旅(十) KSafeMainproject的分析 1
  5. 弹出率很高的网页弹窗代码
  6. 用浏览器下载一个文件,当点击该文件(原理)
  7. 获取Mac地址getMacAddress
  8. kali 切换root账号
  9. [4G5G专题-53]:物理层-手机终端的传输模式TM详解
  10. Mifare S50控制条件