不符合MongoDB与Postman Schema的非标准JSON提交及React生成方案咨询
问题根因
你当前获取的是浏览器DevTools打印的JavaScript对象字面量输出,并非符合RFC 8259规范的标准JSON,不符合要求的核心问题如下:
- 包含
Object、Array这类JS专属的类型标识 - 数组、对象的最后一个元素后存在多余的尾随逗号
- 部分字符串值存在换行断裂(比如
dateObservation字段的引号被换行拆分)
Postman快速导入使用的方法
无需手动逐行修改,可通过以下两种方案快速转换:
- 控制台直接复制标准格式:如果该对象是从Chrome/Edge控制台输出的,右键点击对象,选择「Copy object」,直接粘贴到Postman的Body(raw+JSON格式)输入框中,就是可用的标准JSON
- 手动粘贴转换:如果只能拿到你给出的非标准字符串,直接粘贴到Postman的Body输入框后,点击输入框右上角的
{}格式化按钮,Postman会自动抹除Object/Array标识、删除多余尾随逗号、修复断裂的字符串,仅需核对少量特殊格式即可直接使用
React端生成规范JSON的方案
无需额外的第三方生成工具,用原生能力即可实现:
- 如果你用原生fetch发请求,提交前用
JSON.stringify()方法序列化待提交的JS对象即可,该方法原生输出符合规范的标准JSON,会自动处理类型标识、尾随逗号、特殊字符转义等问题,示例代码如下:
// 待提交的JS对象 const submitData = { VariableRep: ["101-1", "101-2", "101-3"], dateObservation: "2020/8/12", essaiParcelle: "key1", microParcelle: ["101", "102", "201", "202"], nameSerie: "Assess", nbRepetition: "3", variablesUnique: [{ id: 2, title: "Carence en bore - % de surface parcellaire touchée" }] } // 序列化后作为请求体 fetch('你的MongoDB POST接口地址', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(submitData) })
- 如果你用axios等请求库,直接把JS对象传给请求的
data参数即可,库会自动完成序列化生成标准JSON,无需手动处理 - 若需要提前校验结构是否符合后端Schema要求,可以引入
ajv校验库,前端提交前先做格式校验,避免提交后报错
报错参考

内容的提问来源于stack exchange,提问作者Garrix
相关产品推荐
相关产品推荐

