zoukankan      html  css  js  c++  java
  • 010天JSON.stringify()详解

    JSON.stringify()除了要序列化的js对象外,还可以接受另外两个参数,这两个参数用于指定以不同的方式序列化js对象。第一个参数是个过滤器,可以是一个数组,也可以是一个函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩紧。单独或组合使用这两个参数,可以更全面深入地控制JSON的序列化。

    1.过滤结果

    如果过滤器参数是数组,那么JSON.stringify()的结果中将只包含数组中列出的属性。

    let book = {
        'title':'profession',
        'authors':['yk'],
        edition:3,
        year:2020
    }
    
    let jsonText = JSON.stringify(book,['title','edition']);
    

    得到的jsonText为:

    {'title':'profession',edition:3}
    

    看下面一个传入函数的例子

    let book = {
        'title':'profession',
        'authors':['yk'],
        edition:3,
        year:2020
    }
    
    let jsonText = JSON.stringify(book,function(key, value){
        switch(key) {
            case "authors":
                return value.join(",")
            
            case "year":
                return 5000;
                
            case "edition":
                return undefined;
                
            default:
                return value;
            
        }
    });
    

    函数的时候传入两个,key和value,属性名key只能是字符串,如果函数返回undefined,那么相应的属性会被忽略。

    所以上面得到的结果是

    {'title':'profession','authors':'yk',year:5000}
    

    二。JSON.stringify的字符串缩进功能

    JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符。如果这个参数是一个数值,那么它表示的是每个级别缩进的空格数。例如要在每个级别缩进4个空格:

    let book = {
        'title':'profession',
        'authors':[
            'yk'
        ],
        edition:3,
        year:2020
    }
    
    let jsonText = JSON.stringify(book,null,4);
    

    得到的jsonText是:

    let book = {
            'title':'profession',
            'authors':[
                'yk'
            ],
            edition:3,
            year:2020
    }
    
    ⚠这个数值️最大不能超过10,超过10的按照10处理。
    
    
    有意思的来了,如果缩进参数是一个字符串而非数值,那么这个字符串会被当作缩进符(不再用空格)
    
    let jsonText = JSON.stringify(book,null,"--");
    
    得到jsontext
    
    {
    --'title':'profession',
    --'authors':[
    ----'yk'
    --],
    --edition:3,
    --year:2020
    }
    

    同样缩紧字符不能超过10个,超过10个,结果也只会出现前10个字符

    扫码加群,每日更新一篇前端技术文章一起成长。

  • 相关阅读:
    hdu 1429 胜利大逃亡(续)(BFS+位压缩)
    hdu 2955 Robberies
    POJ—Building a Space Station
    POJ-1287 Networking
    POJ-1251 Jungle Roads
    BFS ZOJ problem-1671 Waking Ant
    POJ-1308 Is It A Tree?
    poj 1611The Suspects
    POJ Wireless Network
    POJ 2524 Ubiquitous Religions
  • 原文地址:https://www.cnblogs.com/bbqq1314/p/12545513.html
Copyright © 2011-2022 走看看