美文网首页
JSON.stringify()参数

JSON.stringify()参数

作者: 老虎爱吃母鸡 | 来源:发表于2017-07-03 22:21 被阅读0次

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

    JSON.stringify()的第一个参数是可序列化的js对象

    replacer

    第二个参数是一个replacer,replacer可以是一个函数或者一个字符串数组

    当replacer是数组时,相当于一个白名单,只有在这个数组中的属性最终会被序列化

    JSON.stringify({
        name: 'acky',
        age: 18,
        gender: 'male'
    }, ['name', 'age'])
    // result
    // "{"name":"acky","age":18}"
    

    当replacer是函数时,接受两个参数,key和value,注意:

    Initially it gets called with an empty key representing the object being stringified, and it then gets called for each property on the object or array being stringified

    一开始会先接收到key为空,value为要序列化的对象,必须返回这个对象,否则JSON.stringify()没有结果,因为会递归对这个对象上的key:value调用replacer函数

    image.png
    var rep = (key, value) => {
        if (key === 'name') {
            return value.toUpperCase()
        }
        if (key === 'age') {
            return ++value
        }
        if (key === 'gender') {
            return 'female'
        }
        return value
    }
    JSON.stringify({
        name: 'acky',
        age: 18,
        gender: 'male'
    }, rep)
    // result
    // "{"name":"ACKY","age":19,"gender":"female"}"
    

    space

    第三个参数表示的是每个字符前的缩进,可以是字符串,或者数字,数字表示的是缩进的空格,最大为10

    当使用字符串作为缩进的时候

    JSON.stringify({ name: 'acky', age: 19, gender: 'male' }, null, 'hello world')
    // result
    "{
    hello worl"name": "acky",
    hello worl"age": 19,
    hello worl"gender": "male"
    }"
    

    当使用数字表示缩进的空格时

    JSON.stringify({ name: 'acky', age: 19, gender: 'male' }, null, 10)
    // result
    "{
              "name": "acky",
              "age": 19,
              "gender": "male"
    }"
    

    相关文章

      网友评论

          本文标题:JSON.stringify()参数

          本文链接:https://www.haomeiwen.com/subject/ssvzcxtx.html