Angular中如何向后端发送符合要求的JSON,将数组格式转为对象格式
问题原因
你当前得到数组格式的核心原因是你将数据存在了数组类型的documentsArray变量中,且使用数组的push()方法追加数据,最终序列化后自然就是外层带[]的数组格式。
解决方案
根据实际业务场景选择对应修改方案即可:
场景1:每次仅上传单个文档,不需要存储多份文档数据
直接把存储变量从数组改为普通对象即可:
- 替换原有变量定义:
// 替换原来的 documentsArray = [] documentsObj = {} as {documentType?: string, file?: string | ArrayBuffer | null};
- 修改业务逻辑中的赋值代码,去掉数组push操作:
uploadFile2(files: FileList | null): void { const file = files.item(0) const reader = new FileReader() reader.readAsDataURL(file) reader.onload = () => { // 直接给对象赋值即可 this.documentsObj = { documentType: this.form.controls.dokumentType.value, file: reader.result } console.log(this.documentsObj) // 后续向后端发请求时直接传 this.documentsObj 即可 } }
场景2:需要存储多个文档,仅要求向后端传参时外层为对象格式
不需要修改原有存储逻辑,发送请求时把数组放到对象的对应属性中即可,属性名可根据后端要求调整:
// 发送请求前的参数处理 const requestData = { // 示例属性名,可替换为后端要求的字段,比如list、files等 documents: this.documentsArray } console.log(requestData) // 此时输出就是外层为{}的目标对象格式 // 后续发请求直接传 requestData 即可
内容的提问来源于stack exchange,提问作者natyus
相关产品推荐
相关产品推荐

