前端技术之:JSON.stringfy详细说明

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



value 被序列化为字符串的对象

replacer 根据类型不同,其行为也不一样。如果是一个函数类型,则相当于是一个filter,可以对序列化的键值对进行加工处理;如果是一个数组,则只有符合数组中名称的key才会被输出

space 如果为0或不填,则不进行格式化处理;如果为大于0的数值,则表示每级缩进空格数;如果是一个字符串,则表示每级缩进时替代空格进行填充的字符串内容。



通过以下的data作为示例:

let data = {
    name: ‘wang‘,
    age: 28,
    address: null,
    favorites: undefined,
    company: {
        name: ‘world village‘,
        address: ‘Beijing city‘
    }
}

不加任何参数,直接输出:

console.log(JSON.stringify(data))

结果为:

{"name":"wang","age":28,"address":null,"company":{"name":"world village","address":"Beijing city"}}

第二个参数为数组:

console.log(JSON.stringify(data, [‘name‘, ‘age‘]))

结果为:

{"name":"wang","age":28}

第二个参数是一个函数:

console.log(
    JSON.stringify(data, (k, v) => {
        if (‘age‘ == k) {
            return undefined
        }
        return v
    })
)

结果为:

{"name":"wang","address":null,"company":{"name":"world village","address":"Beijing city"}}

如果第三个参数为0或者null:

console.log(JSON.stringify(data, null, 0))

则结果为:

{"name":"wang","age":28,"address":null,"company":{"name":"world village","address":"Beijing city"}}

如果第三个参数为大于0的数值:

console.log(JSON.stringify(data, null, 2))

则结果为:

{
  "name": "wang",
  "age": 28,
  "address": null,
  "company": {
    "name": "world village",
    "address": "Beijing city"
  }
}

如果第三个参数为字符串:

console.log(JSON.stringify(data, null, ‘**‘))

则结果为:

{
**"name": "wang",
**"age": 28,
**"address": null,
**"company": {
****"name": "world village",
****"address": "Beijing city"
**}
}

如果过滤值为null或者undefined的键值对?

let data = {
    name: ‘wang‘,
    age: 28,
    address: null,
    favorites: undefined,
    men: true,
    women: false,
    company: {
        name: ‘world village‘,
        address: ‘Beijing city‘
    }
}
console.log(
    JSON.stringify(data, (k, v) => {
        if (null != v && undefined != v) return v
    })
)

原文地址:https://blog.51cto.com/14565733/2446126

时间: 2024-11-06 22:05:28

前端技术之:JSON.stringfy详细说明的相关文章

最热web前端技术汇总

Web前段技术发展很快,主流技术日新月异,想想自己刚毕业那会用的asp技术,现在已经很少有主流网站在使用了. 再到后来的J2EE框架,然后SpringMVC大行其道,但是最近各种js框架被广为传播,Html5的推出很是丰富了移动互联网的发展,此文对当前最新的几种web前端技术进行的汇总,让大家更多地了解,然后取其所长,避其所短,快速推出简约大方,维护方便,性能良好的个人网站. JavaScript MV*框架 在相当长的一段时间里,每个程序员都要学会如何利用JavaScript来编写弹出一个警告

LigerUI视频教程_基于LigerUI前端技术实现的管理平台

基于LigerUI前端技术实现的管理平台(纯静态页面,json,工作流及权限管理)适合人群:初级课时数量:39课时用到技术:Liger UI.纯静态页面.万能数据处理后台涉及项目:企业进销存管理系统咨询QQ:1840215592 LigerUI视频教程详细查看:http://www.ibeifeng.com/goods-292.html课程简介:1.LigerUI视频教程是一套关于Web实战应用学习的教程,它主要讲述的是jQuery LigerUI这框架,它是基于jQuery的一系列UI控件组合

前端技术学习路线及技术汇总

下面是简单整理的一些前端的学习路线:第一阶段: HTML+CSS:HTML主要就是网页编辑.包括HTML进阶.CSS进阶.div+css布局.HTML+css整站开发.Javascript 语言:JavaScript是web前端中最重要的知识,包括Js基础教程.js内置对象常用方法.常见DOM树操作大全.ECMAscript.DOM.BOM.定时器和焦点图.JS基本特效:常见特效,如tab.导航.整页滚动.轮播图.JS制作幻灯片.弹出层.手风琴菜单.瀑布流布局.滚动事件.滚差视图.JS高级特征:

大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app

大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app ( 本文内容为melodyWxy原作,git地址:https://github.com/melodyWxy/twa-tf.js , ) 什么是TWA 简单来讲,TWA(Trusted Web Activity 可信任的网络应用)即: 基于Chrome Custom Tabs,利用谷歌浏览器提供的api,实现强大功能的桌面应用技术. 如果说你对PWA这个概念有所了解,那么TWA的实现就相当于 PWA + 更丰

前端技术-调试工具(上)

页面制作之调试工具 常用的调试工具有Chrome浏览器的调试工具,火狐浏览器的Firebug插件调试工具,IE的开发人员工具等.它们的功能与使用方法大致相似.Chrome浏览器简洁快速,功能强大这里主要介绍Chrome浏览器的调试工具. 打开 Google Chrome 浏览器,通过下面任何一种方式进入开发人员工具: -点击位于浏览器用户界面右上角的"页面"下拉菜单,"更多工具"→"开发人员工具". -右键点击网页上的任一元素,在弹出菜单中选择&

前端技术-调试工具(下)

页面制作之调试工具 五.Profiles 这个主要是做性能优化的,包括查看CPU执行时间与内存占用等. 例述如下:原文地址:http://www.smashingmagazine.com/2012/06/12/javascript-profiling-chrome-developer-tools/. 你的网站正常运转.现在我们来让它运转的更快.网站的性能由页面载入速度和代码执行效率决定.一些服务可以让你的网站载入更快,比如压缩JS和CDN,但是让代码执行的更快你要做的事情.代码中很小的改动都可能

前端技术Jquery与Ajax使用总结

前端技术Jquery与Ajax使用总结 虽然主要是做的后端,但是由于有些时候也要写写前台的界面,因此也就学习了下Jquery和Ajax的一些知识,虽说此次写的这些对于前端大神来说有些班门弄斧的感觉,但是为了加深自己的记忆,还是总结一下下,有什么不对的地方欢迎大家指出~ 准备工作 由于我是使用的bootstrap,所以有些操作也是基于它来进行的,比如说模态框什么的,有关bootstrap的相关知识可以到这里去学习.然后这个项目用的是Struts框架.好了,基本情况就是酱紫了. 将jquery的包以

BugPhobia进阶篇章:前端技术/设计文档

0x01 :前端概述 0x0100 :前端基本描述 前端基础框架 Semantic UI 根据http://semantic-ui.com/提供的样例和文档,依据Version 2.1.4版本的特性进行开发 在后续的开发中将针对此框架进行的修改 ü  调整Semantic UI的Theming主题并调整less文件的参数从而扩展主题,尽力实现个人订制 ü  更新Semantic UI版本从而进行进一步的调整和维护 后端基础框架 Django 根据https://www.djangoproject

SLAM前端技术选择思考

以前是专门做室内定位技术研究的,先后学习和分析了多种基于电磁的室内定位技术,如WiFi指纹定位(先后出现过RSSI.CTF.CIR多种指纹特征).WiFi ToF定位.低功耗蓝牙BLE以及iBeacon定位,调研和测试过超宽带(UWB)定位技术.地磁指纹定位等技术.后面有时间会准备一个适用场景和性能指标的详细对比分析. 室内定位技术通常以定位区域的精准结构及地图已知为前提,随着机器人相关技术的发展和应用场景的逐步拓展,同步定位与地图构建SLAM技术日益重要,近两个月学习和测试了下SLAM相关的技