JSON. stringify()妙用,处理复杂数据

622 阅读2分钟
在日常开发中,尤其是后台系统,我们经常会遇到要处理特别多的数据,提交到后端接口。
比如像下面这种,后端返回的对象属性有几十个,但是我们二次操作像后端提交数据的时候,他们接口只需要其中的10几个

// 当然如果你接口只需要其中的几个,那这样写是没有问题的,但是如果多了的话,写起来就非常的麻烦

// 我们就只能像这样一个一个的写

const data = {
    id: item.id,
    name: item.name,
    age: item.age,
    address: item.address
    // ....
};

// 又或者使用ES6解构赋值

const { id, name, age, address, ... } = item;
const data = { id, name, age, address, ... };

// 如果需要提交非常多属性的时候,我们就可以使用JSON.stringify()

// 把我们需要提交的属性列出来
const submitArr = ["id", "name", "age", "address"]  

// JSON.stringify() 会把我们第二个参数数组中的值,在原始对象中取出来,返回一个新的JSON对象
const data = JSON.parse(JSON.stringify(item, submitArr));

// 结果:
{ id: 123, name: "li", age: 18, address: "china" }

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

参数说明:

  value:
    必需, 要转换的 JavaScript 值(通常为对象或数组)。

  replacer:
    可选。用于转换结果的函数或数组。

    如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
    
    如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。

  space:
    可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。

返回值:
    返回包含 JSON 文本的字符串。