在做项目的时候前端需要通过后端提供的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 -