1、语法
JSON.stringify(value[, replacer [, space]])
-
value
将要序列化成 一个 JSON 字符串的值。
-
replacer
可选 - 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;
- 如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;
- 如果该参数为 null 或者未提供,则对象所有的属性都会被序列化。
-
space
可选 - 指定缩进用的空白字符串,用于美化输出(pretty-print);
- 如果参数是个数字,它代表有多少的空格;上限为10。
- 该值若小于1,则意味着没有空格;
- 如果该参数为字符串(当字符串长度超过10个字母,取其前10个字母),该字符串将被作为空格;
- 如果该参数没有提供(或者为 null),将没有空格。
「返回值」
一个表示给定值的JSON字符串。
2、使用
// 默认情况下数据是这样的 let signInfo = [ { fieldId: 539, value: undefined }, { fieldId: 540, value: undefined }, { fieldId: 546, value: undefined }, ] // 经过JSON.stringify之后的数据,少了value key,导致后端无法读取value值进行报错 // 具体原因是`undefined`、`任意的函数`以及`symbol值`,出现在`非数组对象`的属性值中时在序列化过程中会被忽略 console.log(JSON.stringify(signInfo)) // '[{"fieldId":539},{"fieldId":540},{"fieldId":546}]' const aa = JSON.stringify(signInfo,(key,value) => typeof value === 'undefined' ? '' : value)
// 优化- [{"fieldId":539,"value":""},{"fieldId":540,"value":""},{"fieldId":546,"value":""}]