JSON.stringify的认知历程

本文从初识JSON.stringify的基础用法,到掌握其高级特性,如使用缩进美化输出、通过第二个参数处理undefined值及选择性序列化属性,带你全面了解JSON.stringify在前端开发中的应用。

阶段 1

初入前端,认识到JSON.stringify可以序列化对象为一个字符串,在开发中提供了许多便利。

JSON.stringify({ x: 5, y: 6 });
//"{"x":5,"y":6}"

阶段 2

然后遇到一个需求是序列化字符串,且带有缩进格式化的方式显示在编辑器中。

才认识到,原来这个方法还可以传递3个参数。

第3个参数用于指定缩进用的空白字符串,用于美化输出(pretty-print)。

JSON.stringify({ x: 5, y: 6, z: {a: 1} }, null, 2);
/*
"{
  "x": 5,
  "y": 6,
  "z": {
    "a": 1
  }
}"
*/

阶段 3

再然后,我遇到了一个问题:

如果对象中属性的值是undefined,那么序列化之后这个属性会被忽略。

let person = {name: undefined, hobby: null, age: 18 };
JSON.stringify(person)
// "{"hobby":null,"age":18}"

然而在业务上即使该属性的值是undefined,也是有表达特殊含义的,必然需要传递。

原来此函数的第二个参数可以搞事情,如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;

JSON.stringify(person, (k,v) => v===undefined ? null : v );
// "{"name":null,"hobby":null,"age":18}"

第二个参数还可以是一个数组。表示序列化后保留的属性

let person = {name: undefined, hobby: null, age: 18 };
JSON.stringify(person,["age"])

// "{"age":18}"

更多用法官方文档JSON.stringify()很详细

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青菜小王子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值