当前位置: 博客 /  JavaScript  / 前端发送对象数组给后端

场景

在做项目的时候前端需要通过后端提供的API发一个对象数组给后端。
先声明一个对象数组:

let array = [
 {"name":"Huan", "age":16},
 {"name":"Hanna","age":17}
]

假如这个API是GET方式,url是:let url = '/list?array=' + array,如果直接拼接array,实际上发送给后台的请求是:/list?array=[object Object],[object Object]

那么这样就会出错,需要对array处理,加一句:array = JSON.stringify(array)

再验证我们的url,变成了:/list?array=[{"name":"Huan","age":16},{"name":"Hanna","age":17}],正是我们要的结果。

原因

url会调用默认的toString()方法进行字符串拼接

  • toString()是js对象的方法,默认情况下,toString()方法被每个Object对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 “[object type]”,其中type是对象的类型。在这种情景下,使用默认的toString()返回的值不是我们期望的。

  • JSON.stringify()是JSON的方法,用于将 JavaScript 值转换为 JSON 字符串。这种方法适合我们将数据转换后传递给后端。

后端在接收到array后也需要进行处理,如果用typeof array来检测,得到的结果是string,此时后端只需要使用JSON.parse(array),就可以还原为最原始的array数组了。

总结

前端传给后端的时候用JSON.stringify(array)来转为字符串,后台收到字符串处理的时候使用JSON.parse(array)来还原为原数组。

- END -