资讯专栏INFORMATION COLUMN

你不知道的JSON.stringify()妙用

alin / 926人阅读

摘要:语法一般用法扩展用法可以是函数或者是数组。功能通过数组过滤某些属性只需要属性和属性,其他不要。可以是数字或者是字符串如果是数字则表示属性名前加上空格符号的数量,如果是字符串,则直接在属性名前加上该字符串。功能类似于的第二个参数的功能。

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

一般用法:

var user = {name: "andy", isDead: false, age: 11, addr: "shanghai"};

JSON.stringify(user);

"{"name":"andy","isDead":false,"age":11,"addr":"shanghai"}"
2 扩展用法 2.1 replacer

replacer可以是函数或者是数组

功能1: 改变属性值
将isDead属性的值翻译成0或1,0对应false,1对应true

var user = {name: "andy", isDead: false, age: 11, addr: "shanghai"};

JSON.stringify(user, function(key, value){
    if(key === "isDead"){
        return value === true ? 1 : 0;
    }
    return value;
});

"{"name":"andy","isDead":0,"age":11,"addr":"shanghai"}"

功能2:删除某个属性
将isDead属性删除,如果replacer的返回值是undefined,那么该属性会被删除。

var user = {name: "andy", isDead: false, age: 11, addr: "shanghai"};

JSON.stringify(user, function(key, value){
    if(key === "isDead"){
        return undefined;
    }
    return value;
});

"{"name":"andy","age":11,"addr":"shanghai"}"

功能3: 通过数组过滤某些属性
只需要name属性和addr属性,其他不要。

var user = {name: "andy", isDead: false, age: 11, addr: "shanghai"};

JSON.stringify(user, ["name", "addr"]);

"{"name":"andy","addr":"shanghai"}"
2.2 space

space可以是数字或者是字符串, 如果是数字则表示属性名前加上空格符号的数量,如果是字符串,则直接在属性名前加上该字符串。

功能1: 给输出属性前加上n个空格

var user = {name: "andy", isDead: false, age: 11, addr: "shanghai"};

JSON.stringify(user, null, 4);

"{
    "name": "andy",
    "isDead": false,
    "age": 11,
    "addr": "shanghai"
}"

功能2: tab格式化输出

var user = {name: "andy", isDead: false, age: 11, addr: "shanghai"};

JSON.stringify(user, null, "	");
"{
    "name": "andy",
    "isDead": false,
    "age": 11,
    "addr": "shanghai"
}"

功能3: 搞笑

JSON.stringify(user, null, "good");
"{
good"name": "andy",
good"isDead": false,
good"age": 11,
good"addr": "shanghai"
}"
2.3 深拷贝
var user = {name: "andy", isDead: false, age: 11, addr: "shanghai"};

var temp = JSON.stringify(user);
var user2 = JSON.parse(temp);
3 其他

JSON.parse() 其实也是支持第二个参数的。功能类似于JSON.stringify的第二个参数的功能。

4 参考

MDN JSON.stringify()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91954.html

相关文章

  • 你不知道 JSON.stringfy

    摘要:会对对象中的每一个键值对调用函数,然后会使用其返回值,作为格式化后的值,比如使每个属性的值递增函数在省略敏感数据时,十分有用。如果它发现方法,会调用它,然后将它的返回值替换格式化后的值,比如方法可以返回任意的值,包括对象基础类型,或者。 http://thecodebarbarian.com/t... 写在前面 JSON.stringfy()是将一个 JavaScript 对象转化为 ...

    taohonghui 评论0 收藏0
  • 前端点滴

    摘要:走在前端的大道上持续更新,最后更新时间年月日从作用域说开去不再彷徨完全弄懂中的译文总结你不知道的妙用深入理解之和中的对象拷贝高度自适应的个方法中与区别中回调地狱的今生前世细谈中的一些设计模式重温核心概念和基本用法图片预加载及插件编写实例跨域 走在前端的大道上 持续更新,最后更新时间2017年6月19日 从 JavaScript 作用域说开去 不再彷徨:完全弄懂JavaScript中的...

    CoderDock 评论0 收藏0
  • javascript中让人懵逼类型转换

    摘要:核心点中的强制类型转换总是返回标量基本类型值。数字化对象在强制转换为数字的时候,会优先调用方法,如果返回基本类型的值,则直接使用该返回值如果返回值不是基本类型,则会继续调用方法,如果返回基本类型的值,则直接使用该返回值,否则报错。 最近在读《你不知道的javascript》系列图书,收获蛮大,感慨也挺多的。是的,关于javascript,你不是不知道,而是真的不知道。?就比如类型转换,...

    didikee 评论0 收藏0
  • 你不知道JavaScript》 (中) 阅读摘要

    摘要:这时候控制台看到的是对象的快照,然而点开看详情的话是这段代码在运行的时候,浏览器可能会认为需要把控制台延迟到后台,这种情况下,等到浏览器控制台输出对象内容时,可能已经运行,因此会在点开的时候显示,这是的异步化造成的。 本书属于基础类书籍,会有比较多的基础知识,所以这里仅记录平常不怎么容易注意到的知识点,不会全记,供大家和自己翻阅; 上中下三本的读书笔记: 《你不知道的JavaScri...

    stackvoid 评论0 收藏0
  • 原理解释 - 收藏集 - 掘金

    摘要:巧前端基础进阶全方位解读前端掘金我们在学习的过程中,由于对一些概念理解得不是很清楚,但是又想要通过一些方式把它记下来,于是就很容易草率的给这些概念定下一些方便自己记忆的有偏差的结论。 计算机程序的思维逻辑 (83) - 并发总结 - 掘金从65节到82节,我们用了18篇文章讨论并发,本节进行简要总结。 多线程开发有两个核心问题,一个是竞争,另一个是协作。竞争会出现线程安全问题,所以,本...

    AlphaGooo 评论0 收藏0

发表评论

0条评论

alin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<