最新文章:

您的位置: 富录-前端开发|web技术博客 > JavaScript > 你不常用的JSON.stringify用法

你不常用的JSON.stringify用法

发布时间:2022年03月16日 评论数:抢沙发阅读数: 2127

    先想想,工作中,你经常用JSON.stringify来干嘛?还有哪些用法和特性你是没用过的?接下来我们一起来看看。

    如果你还想了解一些JSON.parse的其他用法,可以看看《你不常用的JSON.parse的用法》这篇文章

    语法

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

    从语法上来看,我们常用的是value这个参数,replacerspace这两个参数比较少用,或者有些人基本没用过。


    我们来看个例子


    这个是我们都需要的对象

    const person = {
            id: 3508,
            name: 'DGF',
            age: 30,
            address: {
                city: 'xm',
            },
            arr: [1, 2, 3]
    }

    1.用来序列化对象

    默认的JSON.stringify(obj)是一行字符串

    console.log(JSON.stringify(person))


    参数space

    space有空间,间距的意思,用来控制字符串每个字符的间距,在格式化JSON时,用来控制每行的缩进

           

    2.格式化

    格式化输出,4表示空格缩进

    console.log(JSON.stringify(person, null, 4))

    用自定义字符串用于缩进

    console.log(JSON.stringify(person, null, '....'))


    参数replacer

    可以是个数组或者函数,函数时,有两个参数,keyvalue,其作用是可以选择哪些属性要隐藏(即不需要被序列化的属性)


    3.筛选属性

    序列化数据时隐藏某些属性

    let test1 = JSON.stringify(person, (key, value) => {
            //id和age不需要序列化
            if(key == 'id' || key == 'age') {
                return
            }
            return value;
           })
           console.log(test1)
           let test2 = JSON.stringify(person, (key, value) => {
            //value为number类型的不需要序列化
               if(typeof value == 'number') {
                   return
               }
               return value;
           })
           console.log(test2)
    
           function stripKeys(...keys) {
               return (key, value) => {
                   if(keys.includes(key)) {
                       return
                   }
                   return value;
               }
           }
           console.log(JSON.stringify(person, stripKeys('arr', 'address')))
    
    

    数组里面是需要序列化的数据

    console.log(JSON.stringify(person, ['name', 'address', 'city']))


    也可用于数组

    筛选数组需要的元素

    const person1 = [{
                id: 1,
                name: 'a',
                age: 12,
                arr: ['a', 'b', 'c']
           },{
                id: 2,
                name: 'b',
                age: 22,
                arr: ['aa', 'bb', 'cc']
           }]
    
           console.log(JSON.stringify(person1, ['id', 'age']))


    4.判断数组/对象是否包含某对象

     const person2 = {
               id: 2,
               name: 'b',
               age: 22,
               arr: ['aa', 'bb', 'cc']
           }
    
           console.log(JSON.stringify(person1).indexOf(JSON.stringify(person2)) !== -1);//true
    
           const p3 = {
               a: 1,
               b: 2,
               c: {
                   d: 5
               }
           }
    
           const p4 = {
               d: 5,
           }
           console.log(JSON.stringify(p3).indexOf(JSON.stringify(p4)) !== -1);//true


    5.判断数组是否相等

    let arr1 = ['a', 'b'];
    let arr2 = ['a', 'b'];
    console.log(JSON.stringify(arr1) === JSON.stringify(arr2));//true


二维码加载中...
本文作者:DGF      文章标题: 你不常用的JSON.stringify用法
本文地址: https://arbays.com/post/176     本文已被百度收录!
版权声明:若无注明,本文皆为“富录-前端开发|web技术博客”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论