axios使用post提交json数据,嵌套对象不字符串化如何传递?能否传递?
题目描述
后端提供的一个上传图片集合的接口,传递寄送数据结构如下:
{
"typeCode": "00010002",
"libType": "1",
"mainPicUrl": "http://img.redocn.com/sheying/20140731/qinghaihuyuanjing_2820969.jpg",
"mainPicPath": "路径1",
"libTitle": "标题1",
"libDesc": "描述1",
"uploadUserId": "UID000000004",
"points": 0,
"details": [
{
"picUrl": "url2",
"picPath": "path2",
"picDesc": "图片描述2",
"points": 0
},
{
"picUrl": "url1",
"picPath": "path1",
"picDesc": "图片描述",
"points": 0
}
]
}
请求依赖库:axios
请求方式:post
请求头格式:application/json
我原本请求接口的时候会将上面json里面的details进行字符串化,即JSON.stringify(...),确保对象数组能够传递到后端,但是现在后端跟我说,他需要直接接受到数组类型的参数,即上面json中的details不做别的操作,直接以对象数组的形式往后端传递,这时候传递过程中,对象数组被强制字符串化变成如下图:
导致请求失败!
你期待的结果是什么?实际看到的错误信息又是什么?
请问各位道友,json格式数据内部属性是对象或者数组的情况下是否可以直接传递?如果可以的话,应该怎么做呢?望赐教,不胜感激!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
亲测并不会出现这种情况。
前端代码:
后端debug效果:
Chrome包信息:
如果可以,请提供一下 js 代码。
本题既然只是问数组元素怎样才能阻止序列化,那么其实后端是否成功接收到值并不重要了(毕竟题主根本不关心后端)。所以,此时只要看一下 chrome 的包信息即可。因此,可以看出,数组内的元素,并不会被自动序列化,更不会被直接
toString()
成[object]
。如果后端使用的是 Node.js ,让后端自己写这段前端代码;
如果后端使用的是其他语言,那么贵司可能需要换个后端,因为跨语言的键值对实现方法还没有问世。
设置 content-type 头?
最暴力的办法就是你自己先 stringily 了之后再发呗