Postman用form-data提交嵌套JSON失败、raw模式正常该如何解决?
问题根因
- 两种请求体模式的传输逻辑完全不同:
raw模式下你提交的是完整JSON结构,Postman会自动携带Content-Type: application/json请求头,后端服务会直接将整个请求体解析为JSON对象,嵌套结构、数组都可以被正确识别。 - form-data默认所有字段值以字符串类型传输:如果你直接把
attachments对应的值填为[{"name": "test_attachment"}]这类字符串格式的结构,后端收到的是字符串类型的值,按字典/数组解析时自然会抛出「期望字典但得到字符串」的错误。
解决方案
场景1:无需上传文件
直接使用raw JSON模式提交即可,符合接口设计的默认预期,不需要额外调整。
场景2:必须用form-data上传附件
可任选以下一种方案解决:
- 方案一:调整字段传值写法(无需修改后端代码)
按照form-data的嵌套结构规范填写键名,大部分后端框架都可以自动识别解析为对应结构:- 普通字段直接填写:
title对应值test_title,date对应值2021-12-31 - 嵌套数组对象按层级写键名:
attachments[0].name对应值test_attachment
- 普通字段直接填写:
- 方案二:后端调整解析逻辑
你仍按字符串格式传输嵌套字段,后端收到对应字段后,手动对字符串做JSON反序列化转换即可。比如Python后端用json.loads()、Node.js后端用JSON.parse()处理attachments字段的字符串值,就能得到正确的数组结构。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

