JavaScript JSON.stringify 有趣的部分

参考语法

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

一般在使用JSON.stringify常见有三种情形

  • 仅仅转换成字符串

    var arr = [{"name":"张三", "age":99, "address":"武汉犄角旮旯里", fun:function(){console.log("我就是一个注释")}}]
    var jsonstr = JSON.stringify(arr);
    console.log(jsonstr);

    image.png

这种简单方便,但是一点都不好看,所以我们可以继续改进下

  • 添加字符

    var arr = [{"name":"张三", "age":99, "address":"武汉犄角旮旯里", fun:function(){console.log("我就是一个注释")}}]
    var jsonstr = JSON.stringify(arr, null," ");
    console.log(jsonstr);

    JavaScript JSON.stringify 有趣的部分_第1张图片

其实很简单,就是在第三个参数里添加了一个空格,当然你也可以添加\n or \t这样的特殊字符

  • 过滤数据,修改replacer参数

    var arr = [{"name":"张三", "age":99, "address":"武汉犄角旮旯里", fun:function(){console.log("我就是一个注释")}}]
    
    var jsonstr = JSON.stringify(arr, ["age"]," ");
    console.log(jsonstr);

    JavaScript JSON.stringify 有趣的部分_第2张图片

其实还可以解决一个问题,JSON.stringify在转换字符串的时候默认是不会转换function
所以可以传递第二个参数修改下。其实想过滤数据也是可以在replacer方法里实现,当你返回的是对象或数组,都会被序列化。所以可以判断value的类型是否返回就ok了

    function replacer(key, value) {

       if(typeof value ==="function"){
            return String(value);
        }
        return value;
      }

var arr = [{"name":"张三", "age":99, "address":"武汉犄角旮旯里", fun:function(){console.log("我就是一个注释")}}]

var jsonstr = JSON.stringify(arr, replacer," ");
console.log(jsonstr);

JavaScript JSON.stringify 有趣的部分_第3张图片

你可能感兴趣的:(JavaScript JSON.stringify 有趣的部分)