JSON.stringfy()

1、语法

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

    将要序列化成 一个 JSON 字符串的值。

  • replacer 可选

    1. 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;
    2. 如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;
    3. 如果该参数为 null 或者未提供,则对象所有的属性都会被序列化。
  • space 可选

    1. 指定缩进用的空白字符串,用于美化输出(pretty-print);
    2. 如果参数是个数字,它代表有多少的空格;上限为10。
    3. 该值若小于1,则意味着没有空格;
    4. 如果该参数为字符串(当字符串长度超过10个字母,取其前10个字母),该字符串将被作为空格;
    5. 如果该参数没有提供(或者为 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":""}]
 
原文地址:https://www.cnblogs.com/hqq422/p/15681755.html