JSON.stringify()的小技巧

普通对象或值转换为 JSON 字符串是这样的

var data = {
    str: 'stringify',
    num: 3,
    list: ['J','S', 'O', 'N'],
    obj: {
        type: 'Object',
        value: '---'
    }
}
JSON.stringify(data)
// '{"str":"stringify","num":3,"list":["J","S","O","N"],"obj":{"type":"Object","value":"---"}}'

这样看起来很难看

怎么样和开发工具那样可以格式化呢

其实 JSON.stringify()还有另外两个参数

来自文档截图

第二个参数 replacer , 可以接收函数和数组类型

类型 解释
函数 有(key, value)参数,返回JSON字符串中的value ,其实就是过滤
数组 数组中元素为目标对象的属性
null或未提供 输出所有

传数组:

var data = {
    str: 'stringify',
    num: 3,
    list: ['J','S', 'O', 'N'],
    obj: {
        type: 'Object',
        value: '---'
    }
}
JSON.stringify(data, ['str', 'list'])
// '{"str":"stringify","list":["J","S","O","N"]}'

传函数:

var data = {
    str: 'stringify',
    num: 3,
    list: ['J','S', 'O', 'N'],
    obj: {
        type: 'Object',
        value: '---'
    }
}
JSON.stringify(data, (key, value)=>{
    if ( key === 'num' ||key == 'obj') {
        return 
    }
    return value
})
// '{"str":"stringify","list":["J","S","O","N"]}'

第三个参数 space ,缩进

类型 解释
数字 每一级别会比上一级别缩进多这个数字值的空格(最多10个空格)
字符串 每一级别会比上一级别多缩进该字符串(或该字符串的前10个字符)
var data = {
    str: 'stringify',
    num: 3,
    list: ['J','S', 'O', 'N'],
    obj: {
        type: 'Object',
        value: '---'
    }
}
console.log(JSON.stringify(data, null, 2))
// {
//  "str": "stringify",
//  "num": 3,
//  "list": [
//    "J",
//    "S",
//    "O",
//    "N"
//  ],
//  "obj": {
//    "type": "Object",
//    "value": "---"
//  }
//}
posted @   牛肉夹馍夹心饼干  阅读(182514)  评论(5编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示